Самые повторяющиеся значения `value`

29. Найти самое часто встречающееся значение

Условие задачи:
Есть таблица с колонками key и value:

key | value
----|------
1   | sdfs
2   | dsfg
3   | sdfs

Необходимо найти значение value, которое встречается чаще всего.

Если несколько значений имеют одинаковую максимальную частоту, вывести их все.


Спойлеры к решению

Подсказки
💡 Сначала сгруппируй строки по value и посчитай количество вхождений через COUNT(*).
💡 Затем нужно определить значения с максимальным количеством повторений.
💡 Если возможны одинаковые максимальные значения, простой LIMIT 1 вернёт только одно из них.

Решение

Вариант с оконной функцией:

SELECT value
FROM (
    SELECT
        value,
        RANK() OVER (
            ORDER BY COUNT(*) DESC
        ) AS rnk
    FROM your_table
    GROUP BY value
) t
WHERE rnk = 1;

Сначала:

GROUP BY value

группирует одинаковые значения, а COUNT(*) определяет количество их вхождений.

RANK() присваивает ранг в порядке убывания количества повторений. Значения с максимальной частотой получают ранг 1.

Для приведённых данных результат:

sdfs

Если по условию достаточно вернуть только одно самое частое значение, можно использовать более простой запрос:

SELECT value
FROM your_table
GROUP BY value
ORDER BY COUNT(*) DESC
LIMIT 1;

Но при одинаковой максимальной частоте такой вариант вернёт только одно из подходящих значений.