2009-08-01 12 views
22

テーブルにはIDと名前の2つの列があります。私が取得したい何頻度別の上位の結果を選択してください。

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

はこれです:

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

基本的に、私はテーブル内で一意の名前をカウントするSQLクエリを必要とし、そのfrequnecyによってそれらをソートしたデータは次のようになります。私はMySQLを使用しています。

ありがとうございました。

答えて

25

私はそれをテストしていないので、構文は完璧ではないかもしれませんが、何このようなものについて:

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

はあなたに一意の名前を与える必要があり、それらが表にappeat時間対応する数の、

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

この意志GROUP BYname(任意の非集計:あなたはGROUP BYを使用する必要があり、その数

+1

これは機能しました。どうもありがとうございました。 –

+1

あなたは大歓迎です:-) –

+0

ほんの少しの追加注文条項は、 "order by frequency desc"のようなものかもしれません。 – Elnoor

13

順列はGROUP BY句で指定する必要があります)、次にCOUNTそれぞれの頻度はnameです。

あなたが唯一のトップ25をしたい場合は、その後のようなLIMIT句を追加するために進むことができます:GROUP BY句の

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

詳しい情報は、MySQLのマニュアルで提供されています:

12.2.8 SELECT Syntax

+0

ありがとう、アンドリュー。非常にあなたの良い。 –

関連する問題