Как рассчитать процентили в MySQL с десятичными знаками? - PullRequest
0 голосов
/ 27 мая 2020

Я хочу архивировать ежедневную статистику цен в MySQL 5.6, где я также использую 25/50/75 процентилей. Формулы, которые я нашел, похоже, работают, но округлены до целых чисел.

Как я могу получить процентили цены 25/50/75 с точностью до 2 десятичных знаков?

INSERT INTO prices_daily
(DATE, ID, PRICE_MIN, PRICE_MAX, PRICE_AVG, `PRICE_25PZTL`, `PRICE 50PZTL`, `PRICE_75PZTL`, STRENGTH)
SELECT
    DATE,
    ID,
    ROUND(MIN(price),2) AS PRICE_MIN,
    ROUND(MAX(price),2) AS PRICE_MAX,
    ROUND(AVG(price),2) AS PRICE_AVG,
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(price ORDER BY price SEPARATOR ','), ',', 25/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS 'PRICE_25PZTL',
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(price ORDER BY price SEPARATOR ','), ',', 50/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS 'PRICE_50PZTL',
    CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(price ORDER BY price SEPARATOR ','), ',', 75/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS 'PRICE_75PZTL',
    count(ID) AS STRENGTH
FROM
    `articles`
WHERE
    DATE = CURDATE()
GROUP BY
    DATE,
    ID
ORDER BY
    STRENGTH DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...