TGViewer
SQL и Базы Данных SQL и Базы Данных @prosql · 3.69K subscribers
Post #291 1.85K
Трюк дня. Найти медиану

Предположим, есть таблица, содержащая в столбце sales такие записи:
2, 1, 3, 8, 7, 5.

Необходимо найти медиану для данного столбца.


Решение:
В PostgreSQL используйте функцию percentile_count:
SELECT percentile_cont (0.5) WITHIN GROUP (ORDER BY sales) FROM table;

В MS SQL также используйте функцию percentile_count:
SELECT percentile_cont (0.5) WITHIN GROUP (ORDER BY sales) OVER (PARTITION BY 1) FROM table;
В PARTITION BY можно внести столбец, по которому группируются данные. В данном случае мы использовали 1, чтобы посчитать медиану по всем данным столбца.

В Oracle используйте функцию MEDIAN:
SELECT MEDIAN (sales) OVER (PARTITION BY 1) FROM table;

Однако в MySQL подобных функций нет. Поэтому медиану нужно вычислять самостоятельно.
Напомним: медиана - это число, которое находится в середине набора чисел, отсортированных по возрастанию.

/*задаем переменную row_index = -1, чтобы отсчет индекса начался с 0 */
SET @row_index := -1;

/*находим среднее двух значений в центре отсортированного набора. Охватывает те случаи, когда общее число записей четное*/
SELECT AVG (subq.sales) as median_value
FROM (
SELECT @row_index:=@row_index + 1 AS row_index, sales
FROM table
ORDER BY sales
) AS subq
WHERE subq.row_index
/*выбираем только значения в центре: одно если число записей нечетное и два если четное*/
IN (FLOOR(@row_index / 2) , CEIL(@row_index / 2));

Ответ: медиана = 4.

#tips
  • ❤ 2
More from @prosql
  1. Sep 9, 2026Если вы ище*те работу, то мой вам совет: перед тем как отправлять ещё 30 откликов, проверь…
  2. Sep 9, 2026Post #688
  3. Sep 8, 2026Вакансии на удалёнке — канал для IT-Релокации или нахождению вакансий на удалёнке. 🟠 Толь…
  4. Aug 23, 2026Каналы с книгами по программированию по различным технологиям. Во всех каналах книги можно…
  5. Aug 13, 2026сайт, который помогает пройти ATS фильтр и улучшить ваше IT-резюме UpdateCV.me Сервис для…
  6. Jul 30, 2026PostgreSQL: SQL + PL/pgSQL Автор: Олег Ткачев Год издания: 2024 #postgresql #sql #ru Скача…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →