【问题标题】:MySQL HELP- print the cno, sectno, and the average gpa of the students enrolled in Computer ScienceMySQL HELP - 打印计算机科学专业学生的 cno、sectno 和平均 gpa
【发布时间】:2014-10-10 19:26:18
【问题描述】:

有人可以指导我如何弄清楚以下内容:

说明“对于每个计算机科学课程、cno、sectno 和该课程注册的学生的平均 gpa 都太打印了。”

我在下面附上了我的表格和我的 SELECT。如果我的 SELECT 看起来我正朝着正确的方向前进,有人可以告诉我吗?如果是这样,我会被困在如何编写我的 ON 子句上。我是否打电话给学生 sid = 注册 sid 以便附上这些表格?我只是很困惑这将如何工作?请帮助指导我,谢谢..

Student(sid,sname,sex,age,year,qpa)
Dept(dname,numphds)
Prof (pname,dname)
Course (cno,cname,dname)
Major(dname,sid)
Section(dname,cno,sectno,pname)
Enroll(sid,grade,dname,cno,sectno)

SELECT  enroll.dname, enroll.cno, enroll.sectno, student.AVG(gpa)
FROM enroll 
JOIN 'student' on 
WHERE dname = 'Computer Science'

【问题讨论】:

  • 您的 join 子句没有任何条件。您需要连接两个表:from enroll join student on enroll.<somecolumn> = student.<somecolumn>

标签: mysql sql


【解决方案1】:

对于连接,您需要指定表在哪些列上相关,并且在使用像 AVG 这样的聚合函数时,您需要使用 GROUP BY 子句。

类似这样的:

SELECT  enroll.dname, enroll.cno, enroll.sectno, AVG(gpa)
FROM enroll 
JOIN student on student.sid = enroll.sid
WHERE dname = 'Computer Science'
GROUP BY dname, cno, sectno

【讨论】:

  • 好的,我知道enroll.sid 与student.sid 有关,所以我尝试连接它们。我在student.sid =enroll.sid WHERE dname ='Computer Science' GROUP BY dname,cno上写了以下代码'SELECTenroll.dname,enroll.cno,enroll.sectno,AVG(gpa) FROMenroll JOIN'student', sectno;'
  • 为什么我不使用 'student.AVG(gpa)' 或者它的工作原理是一样的?在我做了你推荐的调整之后,我仍然没有得到任何回报。
  • @Mel_G using student.AVG(gpa) 是无效语法,因为这意味着 AVG 是学生表中的列而不是函数。 AVG(student.gpa) 本来是正确的。
  • 哦!说得通。谢谢你.. :)!
  • 抱歉,我一直在尝试回答您的问题,但太快按 Enter 键了。也是这个 stackoverflow 的新手。
猜你喜欢
  • 2021-05-07
  • 2021-01-16
  • 1970-01-01
  • 2020-04-04
  • 2013-01-29
  • 2017-07-07
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多