我有一个包含以下字段的游戏桌:
ID Name Email Points
----------------------------------
1 John [email protected] /cdn-cgi/l/email-protection 120
2 Test [email protected] /cdn-cgi/l/email-protection 100
3 John [email protected] /cdn-cgi/l/email-protection 80
4 Bob [email protected] /cdn-cgi/l/email-protection 50
5 John [email protected] /cdn-cgi/l/email-protection 80
我想通过电子邮件对它们进行分组(电子邮件标识两个玩家都是相同的,无论第 2 行和第 4 行有不同的名称),并且还具有分数总和以及结果中最后输入的名称,并根据最高分数总和对它们进行排名到最低的
我想要从示例表中得到的结果是:
Ranking Name Points Games_Played Average_Points
------------------------------------------------------------------------------------------
1 John 200 2 100
2 Bob 150 2 75
3 John 80 1 80
我可以获取排名、总分和平均分,但获取最后输入的名称我认为需要再次加入同一张表,这似乎有点错误。
有什么想法如何做到这一点?
显示名称和分组为电子邮件将导致使用例如MIN(Name) 并导致重复名称。
Select Rank() over (order by Points desc) as Rank
,Name,Points,Games_Played,Average_Points
from
(
Select Min(Name) as Name,Email,Sum(Points) as Points
,Count(*) as Games_Played,AVG(Points) as Average_Points
From @a Group by Email
) a
order by Rank
SQLFiddle http://sqlfiddle.com/#!3/d41d8/16094
在小提琴中有两行注释,您应该取消注释才能看到相同结果的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)