本当に明らかな何かが欠けている可能性がありますが、SQL ステートメントで RIGHT JOIN を正しく機能させることができません。
次の列を持つテーブルがあります。
id、test_id、スコア、class_id、rec_date
test_id で識別される、各テストの各クラスの平均スコアを取得したいと考えています。次の SQL ステートメントがあります。
SELECT c.class_id,
ROUND(AVG(CASE WHEN s.test_id=1 THEN s.score END),1) AS test1,
ROUND(AVG(CASE WHEN s.test_id=2 THEN s.score END),1) AS test2,
ROUND(AVG(CASE WHEN s.test_id=3 THEN s.score END),1) AS test3
FROM scores s
RIGHT JOIN classes c ON s.class_id=c.class_id
GROUP BY c.class_id
クラスにスコアがない場合でも null 値を生成したいのですが、このステートメントは、1 つ以上のテストにスコアが存在する場合にのみクラスのデータを生成します。私の問題は、CASE 演算子を使用して AVG を計算する方法のどこかにあると思います。