Получить процентиль с количеством в столбце - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу получить процентиль 25%.Медиана и процентиль 75% с приведенным ниже примером набора данных:

Item No.    Quantity     Avg Cost
---------------------------------
ABC001      14           100
ABC001      10            90
ABC001      20           130
ABC001      25           110
ABC001      18            80
ABC002      30          1000
ABC002      40          1200
ABC002      28          1300
ABC002      50           950

Я хочу получить этот результат:

Item No     25% Percentile      Median       75% Percentile
-----------------------------------------------------------
ABC001       90                  110          110
ABC002      950                 1000         1200

Результат создан на основе Quantity, но я не знаюкак это сделать с помощью PERCENTILE_CONT, так как эта функция не поддерживает концепцию «Количество».

Чтобы избежать путаницы, я бы дополнительно пояснил в наборе данных: ABC001 = {80,80,80,80 .... (x18), 90,90,90 ... (x10), 100... (x14), 110 .. (x25), 130 ... (x20)} ABC002 = {950,950 .... (x50), 1000, 1000, 1000 ... (x30), 1200 ... (х40), 1300 .. (х28)}

Кто-нибудь знает, как это сделать?

1 Ответ

0 голосов
/ 18 декабря 2018

Вот вариант с использованием PERCENTILE_CONT:

SELECT
    [Item No],
    MAX(pct25) AS [25% percentile],
    MAX(pct50) AS Median,
    MAX(pct75) AS [75% percentile]
FROM
(
    SELECT
        [Item No],
        PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY [Avg Cost])
            OVER (PARTITION BY [Item No]) pct25,
        PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY [Avg Cost])
            OVER (PARTITION BY [Item No]) pct50,
        PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY [Avg Cost])
            OVER (PARTITION BY [Item No]) pct75
   FROM yourTable
) t
GROUP BY [Item No];

Демо

Обратите внимание, что мой вывод не полностью совпадает с вашиможидаемый результат.Возможно, вы не показали весь набор данных.

...