Я пытаюсь найти запрос 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
Спасибо
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
т.е. вы выбираете имя и количество раз, когда оно появляется; но группировка по имени, поэтому каждое имя выбирается только один раз.
Затем вы заказываете по количеству раз, desc; чтобы наиболее часто появляющиеся пользователи приходили первыми.
SELECT COUNT(DISTINCT name) as count FROM your_table
Для подсчета общего количества строк в таблице выполните запрос Pascal без оператора group by
.
Просто измените Amber COUNT (*) на COUNT (1) для лучшей производительности.
SELECT name, COUNT(1) as count
FROM tablename
GROUP BY name
ORDER BY count DESC;