“第二份报告提供了一份完整的学生名单,列出了每个学生所学的科目、该科目的成绩以及所学单元的平均分数。
所需列如下:
student ID,
forename,
surname,
subject ID,
result
在每个学生展示后,报告还应显示每个学生为其课程获得的平均分数。
报告末尾应显示总体平均分。”
我对sql非常陌生,所以对于这个问题的语法方面的任何帮助都将不胜感激。
目前,我已经使用以下工具显示了所有列以及所有学生详细信息:
select student.student_ID
, student.forename
, student.surname
, result.subject_ID
, result.result
from student
, result;
但不管什么原因,它给我的结果都是一样的
正如我所说的,我对sql不是很在行,所以即使只是一个伪syntaz也会很好地解释我必须做些什么来完成这个任务。
我想对于有基本sql知识的人来说应该很简单。
提前谢谢
康纳
更新:进度图片
但是,在添加分组依据时。我好像只上了一堂课?我需要用别的东西来分组吗?一类图片
谢谢你们,我已经在不和谐服务器上找了几个小时的帮助,这是迪福帮了我很多。干杯
更新2:
我现在得到这个加上汇总,它看起来不错,但我不认为这些平均值对应于每个学生
很抱歉这么糟糕。。。我很笨,第四排是每个学生的平均数,这是正确的,但是它应该这样显示吗?
2条答案
按热度按时间nzkunb0c1#
您尚未指定行之间的任何关系
student
以及result
在您的查询中。所以它只返回表中每一行的组合——这称为交叉积或交叉联接。您需要指出行应该如何配对,以便每个学生只显示他们自己的结果,而不是其他学生的结果。你用一个
JOIN
与ON
条件。为了得到每个学生的平均数,你需要使用
GROUP BY student.student_ID
以及聚合函数AVG()
.为了得到一个总体平均数,你不需要分组。在这种情况下,你甚至不需要加入
student
table。通过使用
WITH ROLLUP
选项。每个学生的平均
subject_ID = NULL
,总体平均值student_ID = NULL
.k2arahey2#
在查询中,不指定链接两个表的值。
结果表是否有包含学生id的键列?
那么查询至少应该声明它们应该相等
按原样使用查询并添加where子句。