2011-05-06 19 views
14

Aşağıdaki sql deyimiyle, belirli bir sütun için sayıları ile tüm benzersiz değerleri elde edebilirim:SQL'deki benzersiz değer çiftlerini nasıl sayabilirim?

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

Sayıların tüm benzersiz değer çiftlerini nasıl alacağım. Örneğin, first_name ve last_name sütunları içeren bir tabloya sahip olsaydım, sonuçlara benzer şeyler bulabilirim:

first_name | last_name | say

John | Smith | 42

John | Johnson | 39

David | Smith | 37

vb ...

Temel SQL'de bunu yapabilir miyim? Genellikle MySQL kullanıyorum, ama ortaya çıkan çözümün herhangi bir db'ye çevrilebilir olması gerektiğini farz ediyorum.

cevap

16

Neredeyse doğru ... Sadece ek GROUP BY kolon şöyle eklemek var:

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

Grubunuzdaki birden çok sütunu yan tümce ile kullanın.

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 yapacak ayrı ekleme. Teşekkürler

6

Sadece kaç tane çiftin sayısını istiyorsanız, bunu daha basit bir şekilde yapabilirsiniz. A GROUP BY yan tümcesi gerekli değildir.

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