MySQL: подсчитать вхождения значений DISTINCT

Я пытаюсь найти запрос MySQL, который найдет значения DISTINCT в определенном поле, посчитает количество вхождений этого значения и затем упорядочит результаты по количеству.

пример дб

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

Спасибо

Ответ 1

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

Ответ 2

как насчет этого:

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

т.е. вы выбираете имя и количество раз, когда оно появляется; но группировка по имени, поэтому каждое имя выбирается только один раз.

Затем вы заказываете по количеству раз, desc; чтобы наиболее часто появляющиеся пользователи приходили первыми.

Ответ 3

Просто измените Amber COUNT (*) на COUNT (1) для лучшей производительности.

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