Рассчитать процентиль, используя 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 на имена таблиц и столбцов.
Для получения дополнительной информации проверьте оригинальный пост Ролана Бумана