【发布时间】:2021-01-04 19:16:19
【问题描述】:
我需要编写一个查询来返回组中字段的平均值以及组中这些字段的前 33% 值的平均值。
UserId | Sequence | Value | Value2
-------|----------|-------|-------
1 | 1 | 5 | 0
1 | 2 | 10 | 15
1 | 3 | 15 | 20
1 | 4 | NULL | 25
1 | 5 | NULL | 30
1 | 6 | NULL | 60
返回还需要包含用于计算均值的分母,我想按用户分组并返回如下内容:
UserId | ValueMean | ValueDenom | ValueTopNMean | ValueTopNDenom | Value2Mean | Value2Denom | Value2TopNMean | Value2TopNDenom
-------|-----------|------------|---------------|----------------|------------|-------------|----------------|----------------
1 | 10 | 3 | 15 | 1 | 25 | 6 | 45 | 2
我尝试了各种窗口函数(NTILE、PERCENT_RANK 等),但棘手的是我有多个值字段需要进行相同的操作,并且每个值字段的分母会有所不同(n但是,% 将保持不变)。如果我不清楚或者您需要更多信息,请告诉我。
【问题讨论】:
-
向我们展示您的尝试。
标签: sql sql-server count average greatest-n-per-group