我们应该如何计算SQL中不同对/元组的数量?

时间:2013-01-23 04:22:28

标签: sql

假设架构是这样的:

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(*)

有更好的方法吗?

3 个答案:

答案 0 :(得分:9)

要返回每个不同的名字姓氏的计数,您可以使用COUNTGROUP 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;