MySQL: подсчитать вхождения значений DISTINCT - PullRequest
196 голосов
/ 28 августа 2009

Я пытаюсь найти запрос 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

Спасибо

Ответы [ 3 ]

365 голосов
/ 28 августа 2009
SELECT name,COUNT(*) as count FROM tablename GROUP BY name ORDER BY count DESC;
11 голосов
/ 28 августа 2009

что-то вроде этого:

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

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

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

4 голосов
/ 26 февраля 2018

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

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