Встречается на собеседованиях • сегодня

Как найти медиану в SQL не используя функцию медианы

Для нахождения медианы в SQL без встроенной функции можно использовать оконные функции и подзапросы. Вот пример для PostgreSQL:

sql
SELECT AVG(value) AS median
FROM (
    SELECT value,
           ROW_NUMBER() OVER (ORDER BY value) AS row_num,
           COUNT(*) OVER () AS total_count
    FROM your_table
) ranked
WHERE row_num IN (
    (total_count + 1) / 2,
    (total_count + 2) / 2
);

Для нечетного количества строк оба условия дадут одно и то же значение, для четного - два средних значения, которые усредняются.

Альтернативный подход с PERCENTILE_CONT (если доступен):

sql
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY value) 
FROM your_table;

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

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы