只是想知道我是否有类似的数据
name score
A 2
B 5
C 7
我想要第三排
name score total
A 2 14
B 5 14
C 7 14
我的意思是最终 - 我想在各种总计中找到各种行条目的“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
这可能有效,但查询同一个表两次以计算什么似乎效率低下。有没有我想念的更简单的方法?
是的,有办法。它被称为“窗口聚合函数”:
这
OVER ()
意味着聚合(在这种情况下为总和)超过了整个结果集。如果您希望总数超过说出不同的名称(假设您有相同的行name
,您可以使用OVER (PARTITION BY name)
.