Подтвердить что ты не робот

Выберите лучшие результаты, упорядоченные по частоте

Моя таблица имеет два столбца: id и имя. Данные выглядят следующим образом:

id | name
----------
1    Jeff
2    Sam
3    Carl
4    Sam
5    Carl
6    Jeff
7    Dave
8    Jeff

Я хочу получить следующее:

name | frequency
----------------
Jeff      3
Carl      2
Sam       2
Dave      1

По сути, мне нужен SQL-запрос, который учитывает уникальные имена в таблице и сортирует их по их frequnecy. Я использую MySQL, если это имеет значение.

Благодарственные.

4b9b3361

Ответ 1

Я не тестировал его, поэтому синтаксис может быть не идеальным, но как насчет этого:

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

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

Ответ 2

Вам нужно использовать GROUP BY:

SELECT name, COUNT(*) as frequency
FROM name_table
GROUP BY name
ORDER BY COUNT(*) DESC;

Это будет GROUP BY name (любые неагрегатные столбцы должны быть названы в предложении GROUP BY), а затем COUNT частота каждого name.

Если вы хотите только 25 лучших, вы можете продолжить добавление предложения LIMIT как таковое:

SELECT name, COUNT(*) as frequency
FROM name_table
GROUP BY name
ORDER BY COUNT(*) DESC
LIMIT 25;

Более подробная информация о предложении GROUP BY доступна в руководстве по MySQL:

12.2.8 Синтаксис SELECT