簡體   English   中英

如何計算T-SQL中的GROUP BY行

[英]How to count GROUP BY rows in T-SQL

我有這個SQL查詢,它執行GROUP BY將包含相同Player_id但不包含相同Game_id的所有行合並在一起:

SELECT p.Player_id, 
       p.Name, 
       p.Position, 
       SUM(s.Goals) AS goalsb, 
       SUM(s.Assists) AS assistsb, 
       SUM(s.Points) AS pointsb
FROM Dim_Player AS p 
INNER JOIN Fact_Statistics AS s ON s.Player_id = p.Player_id
GROUP BY p.Player_id, p.Name, p.Position
ORDER BY pointsb DESC, goalsb DESC

我想要做的是每次GROUP BY將一行與另一行合並時插入一個COUNT來創建一個名為“Games playing”的新列。 例:

Player_id      Game_id    goalsb
8470598        465        1
8470598        435        1

這將與上面的SQL查詢組合在一起成為:

Player_id          goalsb
8470598            2

但我希望有這個:

Player_id          goalsb       Games_played
8470598            2            2

如果你有重復的Game_id ,並且你想計算不同的值,你可以添加一個

COUNT (DISTINCT Game_id)

SELECT語句的子句。

將計數功能添加到選擇查詢。 COUNT(*)計算組中的每一行,與所選列無關。

SELECT p.Player_id, p.Name, p.Position, SUM(s.Goals) AS goalsb, SUM(s.Assists) AS assistsb, SUM(s.Points) AS pointsb, COUNT(*) as [Games_played] 
FROM Dim_Player AS p INNER JOIN Fact_Statistics AS s ON s.Player_id = p.Player_id
GROUP BY p.Player_id, p.Name, p.Position, s.Game_id
ORDER BY pointsb DESC, goalsb DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM