如何计算SQL中唯一的值对?

时间:2011-05-06 12:20:41

标签: sql count

使用以下sql语句,我可以获得所有唯一值及其给定列的计数:

select column, count(column) as count 
         from table group by column order by count desc;

如何通过计数获得所有唯一值对。例如,如果我有一个包含first_name和last_name列的表,我可能会发现类似这样的结果:

  

first_name | last_name |数

     

约翰|史密斯| 42

     

约翰|约翰逊| 39

     

大卫|史密斯| 37

等...

我可以在基本SQL中执行此操作吗?我通常使用MySQL,但我认为你提出的任何解决方案都应该可以翻译成任何数据库。

4 个答案:

答案 0 :(得分:18)

你几乎把它弄错了......你只需要添加一个GROUP BY列,如下所示:

SELECT [first_name], [last_name], COUNT(*) AS [Count] 
FROM [Table]
GROUP BY [first_name], [last_name]
ORDER BY [Count] DESC;

答案 1 :(得分:11)

如果你只想要计算多少个不同的对,你可以更简单地做到这一点。 <{1}}子句不是必需的。

GROUP BY

答案 2 :(得分:7)

在group by子句中使用多个列。

select first_name, last_name, count(*) as count from table group by first_name, last_name

答案 3 :(得分:0)

SELECT first_name, last_name, COUNT(distinct last_name) AS c
FROM ttable
GROUP BY first_name, last_name
HAVING c > 999
ORDER BY c DESC 

添加distinct将在MYSQL中执行。 感谢