我可能遗漏了一些非常明显的东西,但我无法让我的 RIGHT JOIN 在我的 SQL 语句中正常工作。
我有一个包含以下列的表格:
id、test_id、score、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
我希望产生空值,即使一个类没有分数,但是这个语句只在一个或多个测试存在分数时为一个类生成数据。我相信我的问题可能在于我使用 CASE 运算符计算 AVG 的方式。