use*_*867 0 sql-server aggregate select
只是想知道我是否有类似的数据
name score
A 2
B 5
C 7
Run Code Online (Sandbox Code Playgroud)
我想要第三排
name score total
A 2 14
B 5 14
C 7 14
Run Code Online (Sandbox Code Playgroud)
我的意思是最终 - 我想找到不同总计中不同行条目的“z 分数”或百分位数。我只是不确定是否有一种简单的方法可以将行值与聚合值进行比较,除了通过子查询,例如
select A.name, A.score, B.total
from myTable A
left join
(select name, sum(score) from myTable group by name) B
on A.name = B.name
Run Code Online (Sandbox Code Playgroud)
这可以工作,但是两次查询同一个表来计算什么似乎效率很低。有没有我缺少的更简单的方法?
是的,有办法。它称为“窗口聚合函数”:
select
A.name, A.score,
sum(A.score) over () as total
from myTable A ;
Run Code Online (Sandbox Code Playgroud)
这OVER ()
意味着聚合(在本例中为总和)涵盖整个结果集。如果您希望总数超过不同的名称(假设您有相同的行name
,则可以使用OVER (PARTITION BY name)
.
归档时间: |
|
查看次数: |
5932 次 |
最近记录: |