如何计算SQL中数据的90th Percentile,SD,Mean

Agg*_*gga 15 sql sql-server sql-server-2012

嗨,我有一个餐桌设施.每天持有一个分数(每天可以报告多个分数,两者都有效)

我需要按月计算得分的第90个百分点,标准差和平均值.

设施:

Id   Month Date  score
1    Jan     1    5
1    Jan     1    5
1    Jan     2    3
1    Jan     3    4
1    Jan     4    4
1    Jan     5    4
1    Feb     1    5
1    Feb     1    5
1    Feb     2    3
1    Feb     3    4
1    Feb     4    4
1    Feb     5    4
Run Code Online (Sandbox Code Playgroud)

有什么办法吗?

谢谢你的帮助.

Cod*_*ent 33

您可以使用SQL Server 2012中引入的新的分析函数套件:

SELECT DISTINCT
            [Month],
            Mean   = AVG(Score) OVER (PARTITION BY [Month]),
            StdDev = STDEV(Score) OVER (PARTITION BY [Month]),
            P90    = PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY Score) OVER (PARTITION BY [Month])
FROM        my_table
Run Code Online (Sandbox Code Playgroud)

有2个百分位函数:PERCENTILE_CONT用于连续分布和PERCENTILE_DISC离散分布.挑选一个适合您需求的产品.

  • 噢,'PERCENTILE_CONT` - 对我来说这是一个新的,看起来值得学习.好的 - 赢得我的赞成. (2认同)