假设架构是这样的:
First Name | Last Name | Age | ID
====================================
John Smith 18 123
John Smith 21 234
John Smith 19 123
Cathy Zhang 20 144
Cathy Zhang 20 144
Jackie Chan 35 456
假设我想计算每个(名字,姓氏)之后的不同对的数量。所以输出应该是:
John Smith 3
Cathy Zhang 1
Jackie Chan 1
我想我可以先做:
SELECT FirstName,LastName,Age,ID,COUNT(*);
然后
SELECT FirstName,LastName,COUNT(*)
有更好的方法吗?
答案 0 :(得分:9)
要返回每个不同的名字姓氏的计数,您可以使用COUNT
和GROUP BY
:
SELECT FirstName, LastName, COUNT(*)
FROM TableName
GROUP BY FirstName, LastName
在上面的例子中,我认为你的意思是张的数量是2。
- 编辑
如果我正确理解您的最新评论,您还想使用DISTINCT
:
SELECT FirstName, LastName, Age, Id, COUNT(*)
FROM (SELECT DISTINCT FirstName, LastName, Age, Id FROM TableName) T
GROUP BY FirstName, LastName, Age, Id
祝你好运。
答案 1 :(得分:2)
请尝试:
SELECT
FirstName,
LastName,
COUNT(*)
FROM (
SELECT DISTINCT * FROM YourTable
) X
GROUP BY FirstName, LastName
答案 2 :(得分:1)
尝试使用,
SELECT firstName, lastName, count(1) FROM name_tab GROUP BY firstName, lastName;