Рассчитать процентиль, используя MYSQL

Я хочу рассчитать процентиль в MYSQL. Пожалуйста, дайте мне знать, что это правильный способ расчета процентиля.

Set @percentile = 30;
select firnum, a.rownum
from 
     (select firnum, @rownum := @rownum + 1 AS rownum
      from (select firnum from per order by firnum) as a, 
           (SELECT @rownum := 0) b) as a,
           (select round((COUNT(*) * @percentile)/100) percen from per) as b
where a.rownum = b.percen;

1 ответ

Я пытался решить эту проблему довольно долго, а потом я нашел следующий ответ. Честно говоря гениально. Также довольно быстро, даже для больших таблиц (таблица, в которой я ее использовал, содержала около 5 миллионов записей и требовала пару секунд).

SELECT
 CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
  GROUP_CONCAT(field_name ORDER BY field_name SEPARATOR ','),
   ',', 95/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS '95th Per'
 FROM table_name;

Как вы можете себе представить, просто замените table_name и field_name на имена таблиц и столбцов.

Для получения дополнительной информации проверьте оригинальный пост Ролана Бумана

Другие вопросы по тегам