在SQL查询中排在前10行的问题?

时间:2011-07-11 16:27:43

标签: sql sql-server sql-server-2005

作为Sql Server 2005的初学者,我应该从表中获得前10名的帮助。

场景就像是,表Invitecount为每个用户ID都有多条记录。我有不同的用户ID与以下的SQL查询

Select distinct(userid) from inviteCount 

对于每个用户ID,我使用以下查询获得点数

Select sum(points) from invitecount 
where UserID = 126429

在得到总和之后,我应该有前10名用户的最高分。我的问题是使用数组等将所有这些语句一起编写。

如果有人可以帮助我,我真的很感激。提前致谢!

3 个答案:

答案 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

(未经测试 - 可能需要调整)