すでにGROUP BY
が適用されているレコードセットのレコード数をSQLでカウントする方法はありますか?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つのレコード(3番目のランクを意味する)を含むレコードセットです。私が本当に好きなのは、レコードそのものではなく、レコードの数だけです(2)。私が考えることができるのは、レコードセットを一時テーブルにダンプし、そこにCOUNT()
を実行することですが、それはかなり高価です。または、データセットをC#に渡してそこにレコード数を渡すこともできますが、指定されたユーザーがひどいレコードを持っていると、送信する必要があるレコード数が非常に大きくなります。
これを行うには比較的安価な方法があると私は願っています。
魅力的な作品です!ありがとうございました! – Andrew