1
SQL中是否有方法来计算已应用GROUP BY
的给定记录集中的记录数?在SQL中执行GROUP BY之后计算记录数
我有一张表格,其中包含一系列游戏中所有用户的赢,关系和损失的每周摘要。它看起来有点像这样:
userid weekid wins losses ties
1 1 10 5 2
1 2 11 3 3
1 3 8 9 0
2 1 11 6 0
2 2 7 9 1
2 3 9 7 1
3 1 3 14 0
3 2 7 9 1
3 3 6 9 2
我想确定给定用户的排名。我会这样做,通过计算比该用户更好的胜利,关系和损失组合的用户数量。如果我想要确定的用户#3例如军衔,我可以使用此查询,但它只是让我半路上有:
SELECT COUNT(userid)
FROM scores
GROUP BY userid
HAVING (SUM(wins) * 2) + SUM(ties) > 35
结果是这样的:
COUNT(userid)
3
3
这给了我一个包含2条记录的记录集(意味着他排名第三)。我真正喜欢的只是记录的数量(2)而不是记录本身。我唯一能想到的是将记录集转储到临时表中,并在那里执行COUNT()
,但这非常昂贵。或者我可以将数据集交给C#并在那里做记录计数,但是如果给定的用户有可怕的记录,那么我需要发送的记录数就相当多。
我希望有一个相对便宜的方法来做到这一点。
工程就像一个魅力!谢谢! – Andrew