sql server分组结果

use*_*723 2 sql sql-server sql-server-2008

这个查询返回它下面的列表,但是id会多次出现,我可以对id进行分组并将所有播放加起来,这样我就可以得到一个列表唯一的ID,旁边有播放的总数.这在sql中可能吗?

SELECT [fkPlayerId],[plays]
FROM [dPlaysPerDay]
INNER JOIN dWinners
ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId]

53693   1
53695   1
53696   1
53693   1
53692   2
53698   2
53697   1
53699   2
53698   3
53693   6
53699   2
53693   2
53700   2
53698   1
Run Code Online (Sandbox Code Playgroud)

Cur*_*urt 6

使用时GROUP BY,其中的所有数据项SELECT必须包含在聚合函数中GROUP BY或放在聚合函数中.

因此,fkPlayerId应该通过进行分组,并plays与所使用的SUM()功能

SELECT [fkPlayerId], SUM([plays])
FROM [dPlaysPerDay]
INNER JOIN dWinners ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId]
GROUP BY fkPlayerId
Run Code Online (Sandbox Code Playgroud)

对于ORDER BY聚合函数,为数据项提供别名,并按此顺序:

SELECT [fkPlayerId], SUM([plays]) as TotalPlays
FROM [dPlaysPerDay]
INNER JOIN dWinners ON [dPlaysPerDay].[fkPlayerId]=dWinners.[pkWinnerId]
GROUP BY fkPlayerId
ORDER BY TotalPlays
Run Code Online (Sandbox Code Playgroud)