Sql-Server
如何在同一行中獲取行值和總和/聚合?(SQL 伺服器)
只是想知道我是否有類似的數據
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
這可能有效,但查詢同一個表兩次以計算什麼似乎效率低下。有沒有我想念的更簡單的方法?
是的,有辦法。它被稱為“視窗聚合函式”:
select A.name, A.score, sum(A.score) over () as total from myTable A ;
這
OVER ()
意味著聚合(在這種情況下為總和)超過了整個結果集。如果您希望總數超過說出不同的名稱(假設您有相同的行name
,您可以使用OVER (PARTITION BY name)
.