2009-08-01 19 views
22

Tablonun iki sütunu var: id ve name. Ne elde etmek istiyorum şudurSıklıkla sıralanmış en farklı sonuçları seç

id | name 
---------- 
1 Jeff 
2 Sam 
3 Carl 
4 Sam 
5 Carl 
6 Jeff 
7 Dave 
8 Jeff 

: Veri şöyle Esasen

name | frequency 
---------------- 
Jeff  3 
Carl  2 
Sam  2 
Dave  1 

, ben tablo içinde benzersiz adlar sayar bir SQL sorgusu gerekiyor ve onların frequnecy göre sıralar . Önemliyse, MySQL kullanıyorum.

Teşekkür ederiz.

cevap

25

bunu test etmedim, bu yüzden sözdizimi mükemmel olmayabilir, ama ne böyle bir şey hakkında:

select name, count(*) as frequency 
from your_table 
group by name 
order by count(*) desc 

size benzersiz adlar vermeli ve onlar tabloda appeat zaman karşılık gelen sayıda

SELECT name, COUNT(*) as frequency 
FROM name_table 
GROUP BY name 
ORDER BY COUNT(*) DESC; 

Bu işlem GROUP BYname (olmayan herhangi bir aggregate: bir GROUP BY kullanmaya gerek bu sayının

+1

Bu çalıştı. Çok teşekkür ederim. –

+1

Rica ederim :-) –

+0

Sadece küçük bir ekleme siparişi, "sıklık sırasına göre düzen" gibi olabilir – Elnoor

13

tarafından sipariş sütunları, GROUP BY tümcesinde adlandırılmalıdır) ve daha sonra her name'un sıklığı için COUNT.

sadece ilk 25 isterseniz, o zaman gibi bir LIMIT madde eklemek geçebilirsiniz:

:

SELECT name, COUNT(*) as frequency 
FROM name_table 
GROUP BY name 
ORDER BY COUNT(*) DESC 
LIMIT 25; 
GROUP BY maddesi hakkında

fazla bilgi MySQL Kılavuzu'nda mevcuttur 12.2.8 SELECT Syntax

+0

Teşekkür ederim, Andrew. Ne mutlu sana. –