web-dev-qa-db-ja.com

MySQL:DISTINCT値の出現回数を数える

特定のフィールドでDISTINCT値を見つけ、その値の出現回数をカウントし、そのカウントで結果を並べ替えるMySQLクエリを見つけようとしています。

サンプルdb

id         name
-----      ------
1          Mark
2          Mike
3          Paul
4          Mike
5          Mike
6          John
7          Mark

期待される結果

name       count
-----      -----
Mike       3
Mark       2
Paul       1
John       1

ありがとう

195
JimmyJ
SELECT name,COUNT(*) as count FROM tablename GROUP BY name ORDER BY count DESC;
364
Amber

このようなものはどうですか:

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

つまり、名前と表示回数を選択しています。ただし、名前でグループ化すると、各名前が1回だけ選択されます。

次に、descの回数で注文します。最も頻繁に表示されるユーザーが最初に来るようにします。

11
Pascal MARTIN

パフォーマンスを向上させるために、AmberのCOUNT(*)をCOUNT(1)に変更しました。

SELECT name, COUNT(1) as count 
FROM tablename 
GROUP BY name 
ORDER BY count DESC;
4
Aerin