2011-05-06 48 views
14

用下面的SQL語句,我可以得到他們的計數所有唯一值給定列:如何計算SQL中唯一的值對?

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

我將如何獲得值的所有唯一對具有計數。例如,如果我有一個帶有列first_name和last_name的表,我可能會發現如下結果:

first_name | last_name | count

John |史密斯| 42

John |約翰遜| 39

David |史密斯| 37

等等

我能做到這一點基本的SQL?我通常使用MySQL,但我認爲你提出的任何解決方案都應該可以轉換成任何db。

回答

16

你幾乎有它正確的...你只需要添加一個額外的GROUP BY柱像這樣:

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

在您的group by子句中使用多個列。

select first_name, last_name, count(*) as count from table group by first_name, last_name 
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 

添加不同會做它在MYSQL。 謝謝

6

如果你只是想計算多少個不同的對,你可以做得更簡單。 A GROUP BY子句沒有必要。

SELECT COUNT(DISTINCT first_name, last_name) AS count_names FROM Table