繁体   English   中英

SQL RIGHT JOIN不起作用

[英]SQL RIGHT JOIN not working

我可能会错过一些确实很明显的东西,但是我无法在我的SQL语句中正确连接。

我有一个包含以下列的表格:

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

我希望产生一个空值,即使一个班级没有分数,但是该语句仅在一个或多个测试有分数时才产生该班级的数据。 我相信我的问题可能出在我与CASE运算符计算AVG的方式上。

您正在汇总不同的行集,因此必须在SELECT部分中使用子查询。 像这样:

SELECT c.class_id, 
  ROUND(AVG(SELECT s.score
            FROM scores s
            WHERE s.test_id = 1
              AND s.class_id = c.class_id)) AS test1,
  ROUND(AVG(SELECT s.score
            FROM scores s
            WHERE s.test_id = 2
              AND s.class_id = c.class_id)) AS test2,
  ROUND(AVG(SELECT s.score
            FROM scores s
            WHERE s.test_id = 3
              AND s.class_id = c.class_id)) AS test3
FROM classes c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM