@delongeroman

Как вывести наиболее повторяющееся значение в таблице при группировке?

Доброго времени суток!
Как мне вывести из этой таблице при группировке по возрасту самое повторяющееся хобби для каждой возрастной группы. Тут, например, должно быть 18 - fishing, 20 - football. Вывести нужно только 2 колонки(возраст и хобби), без подсчета количества.
60281857dc8c8927536867.png
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Для MySQL 8
SELECT DISTINCT `age`, FIRST_VALUE(`hobbies`) OVER `win` AS `hobbies`
  FROM (
    SELECT `age`, `hobbies`, COUNT(*) AS `count`
      FROM `test`
      GROUP BY `age`, `hobbies`
  ) AS `t`
  WINDOW `win` AS (
    PARTITION BY `age`
    ORDER BY `count` DESC
  )
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
select 
	age_hobbies.age, 
	age_hobbies.hobbies
from (
  select age, hobbies, count(*) cnt
  from user_hobbies
  group by age, hobbies
) age_hobbies
join (
select age, max(cnt) maxcnt
from (
  select age, hobbies, count(*) cnt
  from user_hobbies
  group by age, hobbies
) h group by age
) max_age_hobbies on 
	age_hobbies.age = max_age_hobbies.age and 
	age_hobbies.cnt = max_age_hobbies.maxcnt;


Mariadb fiddle
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы