作为Sql Server 2005的初学者,我应该从表中获得前10名的帮助。
场景就像是,表Invitecount为每个用户ID都有多条记录。我有不同的用户ID与以下的SQL查询
Select distinct(userid) from inviteCount
对于每个用户ID,我使用以下查询获得点数
Select sum(points) from invitecount
where UserID = 126429
在得到总和之后,我应该有前10名用户的最高分。我的问题是使用数组等将所有这些语句一起编写。
如果有人可以帮助我,我真的很感激。提前致谢!
答案 0 :(得分:5)
试试这个:
SELECT TOP 10 userID, SUM(Points)
FROM inviteCount
GROUP BY UserId
ORDER BY SUM(Points) desc
我不确定你使用数组是什么意思,但这会让你得到按点数总和排序的十大userIds。
答案 1 :(得分:3)
试试这个:
Select TOP 10 userid, sum(points) from inviteCount group by userid order by sum(points) desc
答案 2 :(得分:1)
你想要这样的东西:
select top 10
userid,
pointstotal = sum(points)
from
invitecount
group by userid
order by sum(points) desc
请按顺序注意。
爱好者版本
select
userid
pointstotal = sum(points) over (partition by userid),
row_number = row_number() over (partition by userid order by sum(points) desc)
from
invitecount i
where
row_number <= 10
(未经测试 - 可能需要调整)