Расчет среднего, медианы и процентиля в SQL - PullRequest
0 голосов
/ 17 июня 2020

Я новичок в SQL и пытаюсь вычислить среднее значение, медианное значение и tp90 для аналогичной таблицы, как показано ниже -

имя год месяц идентификатор сумма
x1 2019 1 a1 46
x1 2019 1 a2 21
x1 2019 1 a3 7
x1 2019 1 a4 25
x1 2019 1 a5 24
x2 2019 1 b1 33
x2 2019 1 b2 9
x2 2019 1 b3 8
x2 2019 1 b4 20
x2 2019 1 b5 15

Я ищу такой вывод -

(имя, год, месяц, среднее, median, tp90) = (x1, 2019, 1, 25, 24, 37.6)

Я могу сделать это с помощью Excel, но с трудом могу обобщить его на весь набор данных с помощью кода SQL.

1 Ответ

0 голосов
/ 17 июня 2020

Я думаю, вы можете просто использовать агрегирование:

select name, year, month, avg(sum) as average,
       percentile_cont(0.5) within group (order by sum) as median,  -- or median()
       percentile_cont(0.9) within group (order by sum) as percentile_90
from t
group by name, year, month;

Ключевая функция здесь percentile_cont(). Во многих базах данных это только оконная функция. К счастью, в Redshift это функция агрегирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...