select a, b, [...];
結果を返すselect ステートメントがあります。
a|b
---------
1|8688798
2|355744
4|457437
7|27834
私はそれを返したい:
a|b
---------
1|8688798
2|355744
3|0
4|457437
5|0
6|0
7|27834
ギャップ番号がないため、私が望むことをしないクエリの例:
select
sub.num_of_ratings,
count(sub.rater)
from
(
select
r.rater_id as rater,
count(r.id) as num_of_ratings
from ratings r
group by rater
) as sub
group by num_of_ratings;
クエリの説明: ユーザーが別のユーザーを評価すると、その評価が評価テーブルにリストされ、評価ユーザーの ID がフィールド rater_id に保持されます。事実上、評価で参照されているすべてのユーザーをチェックし、そのユーザーについて見つかった評価レコードの数を数えますrater / num_of_ratings
。
最後に、1 回評価したユーザー数、2 回評価したユーザー数などがわかります。私の問題は、count(sub.rater) の数値が 1,2,3,4,5 から正常に始まることです...ただし、数字が大きいほどギャップがあります。これは、1028 回評価したユーザーが 1 人いて、1027 回評価したユーザーがいない可能性があるためです。
結果をループするストアドプロシージャなどを適用したくありません。ストアド プロシージャを使用したり、ループしたり、一時テーブルを作成したりせずに、結果のギャップを埋めることは可能ですか?