在sql中计算平均值、中位数和百分位数

h9a6wy2h  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(566)

我是sql新手,正在尝试计算一个类似表的平均值、中位数和tp90,如下所示-
姓名年月id合计
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型
我在寻找这样的输出-
(姓名、年份、月份、平均值、中位数、tp90)=(x1、2019、1、25、24、37.6)
我可以用excel来实现这一点,但很难用sql代码将其推广到整个数据集。

t3psigkw

t3psigkw1#

我认为您可以使用聚合:

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() . 在许多数据库中,这只是一个窗口函数,它是红移中的聚合函数。

相关问题