28

私のテーブルには、id と name の 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 クエリが必要です。問題があれば、MySQL を使用しています。

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

4

2 に答える 2

33

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

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

一意の名前と、対応する各名前がテーブルに表示される回数を、その番号順に並べて提供する必要があります。

于 2009-08-01T19:07:36.270 に答える
18

を使用する必要がありますGROUP BY:

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

これはGROUP BY name(非集計列はGROUP BY句で名前を付ける必要があります)、次にCOUNT各の頻度になりますname

上位 25 件のみが必要な場合は、次のようにLIMIT句を追加できます。

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

GROUP BY句の詳細については、MySQL マニュアルを参照してください。

12.2.8 SELECT構文

于 2009-08-01T19:07:47.767 に答える