<分区>
我希望能够计数,然后根据 C.LastName 的计数对我的表进行分区。我刚刚学习 SQL,并不完全确定 COUNT(...) 行在程序中的工作方式。
这是根据 LastName 对表进行计数和分区的正确方法吗?
出于某种原因,SQL 中的这行代码似乎很难看清它是如何工作的。
select C.*,
COUNT(*) over (partition by c.LastName) as '--Count--'
from Customer C;
表:
PrimaryKey FirstName LastName MiddleName PhoneNumber Address1 Address2 City State Zipcode
1 Test1 LTest1 MTest1 5555555555 555 Governors 5555 Governors Avenue Pierre TT 99999
2 Test2 LTest2 MTest2 4444441234 444 Governors Street 4444 Governors Blvd Bill PP 44444
3 Test3 LTest3 MTest3 3333331234 333 Governors Street 3333 Governors Street Pop RR 33333
4 Test1 LTest1 MTest9 7777777777 77 Governors Avenue 7 Governors Street Yet UU 22222
10 FirstName LastNme MiddleName 8888888889 321 H Street 4321 U Street TownUSA VB 77777
11 NULL A NULL NULL NULL NULL NULL NULL NULL
12 NULL A NULL NULL NULL NULL NULL NULL NULL
13 NULL A LTest NULL HTest NULL NULL NULL NULL
14 Test14 LTest14 MTest14 1231231234 123 VVV Billings Billings NULL NULL
15 NULL NULL NULL NULL NULL NULL NULL NULL NULL
16 NULL A NULL NULL NULL NULL NULL NULL NULL
17 NULL A NULL NULL NULL NULL NULL NULL NULL
18 NULL A NULL NULL NULL NULL NULL NULL NULL
19 NULL test NULL NULL NULL NULL NULL NULL NULL
20 NULL NULL NULL 1 123 ave 123 ave NULL NULL NULL
客户表:
1 Test1 LTest1 MTest1 5555555555 555 Governors 5555 Governors Avenue Pierre TT 99999
2 Test2 LTest2 MTest2 4444441234 444 Governors Street 4444 Governors Blvd Bill PP 44444
3 Test3 LTest3 MTest3 3333331234 333 Governors Street 3333 Governors Street Pop RR 33333
4 Test1 LTest1 MTest9 7777777777 77 Governors Avenue 7 Governors Street Yet UU 22222
10 FirstName LastNme MiddleName 8888888889 321 H Street 4321 U Street TownUSA VB 77777
11 NULL A NULL NULL NULL NULL NULL NULL NULL
12 NULL A NULL NULL NULL NULL NULL NULL NULL
13 NULL A LTest NULL HTest NULL NULL NULL NULL
14 Test14 LTest14 MTest14 1231231234 123 VVV Billings Billings NULL NULL
15 NULL NULL NULL NULL NULL NULL NULL NULL NULL
16 NULL A NULL NULL NULL NULL NULL NULL NULL
17 NULL A NULL NULL NULL NULL NULL NULL NULL
18 NULL A NULL NULL NULL NULL NULL NULL NULL
19 NULL test NULL NULL NULL NULL NULL NULL NULL
20 NULL NULL NULL 1 123 ave 123 ave
NULL NULL NULL
新查询:
SELECT C.*,
A.B as "--Count--"
FROM Customer c
INNER JOIN
(
SELECT lastname,
count(*) as B
FROM customer
GROUP BY lastname
) A
ON c.lastname = A.lastname;
谢谢你向我展示这个例子。计数 (*) 是否为 B(我更改了一些变量只是为了让我知道你可以。A 和 B 不是很好用的变量名。
作为 B 的计数 (*) 是否引用该选择语句中的姓氏。这是我唯一不确定的陈述。