特定のフィールドで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
ありがとう
SELECT name,COUNT(*) as count FROM tablename GROUP BY name ORDER BY count DESC;
このようなものはどうですか:
select name, count(*) as num
from your_table
group by name
order by count(*) desc
つまり、名前と表示回数を選択しています。ただし、名前でグループ化すると、各名前が1回だけ選択されます。
次に、descの回数で注文します。最も頻繁に表示されるユーザーが最初に来るようにします。
パフォーマンスを向上させるために、AmberのCOUNT(*)をCOUNT(1)に変更しました。
SELECT name, COUNT(1) as count
FROM tablename
GROUP BY name
ORDER BY count DESC;