我有3张桌子:
学生:
id: int AUTO_INCREMENT
first_name: char(30)
last_name: char(30)
商标:
id: int AUTO_INCREMENT
mark: int
主题:
id: int AUTO_INCREMENT
name: char(30)
stud_id int
mark_id int
所有列中id
为主键,而主题表中的stud_id int, mark_id int
为辅助键。
如何获得数学上平均分数高于8.5(满分10分)的所有学生的名字,姓氏和平均分数?
这里我开始编写查询,但我不知道如何使用AVG函数,别名和Group By函数
SELECT student.first, student.last, ??? as avg_mark
FROM subject
JOIN student on student.ID = subject.stud_id
JOIN marks on marks.id = subject.mark_id
Where ???
答案 0 :(得分:1)
将AVG与HAVING子句一起使用。
在每个表名旁边的FROM子句中使用别名。
GROUP BY排在最后
答案 1 :(得分:1)
mysql和sql-server都有avg
函数(AFAIK,它是由ANSI SQL标准定义的)。请注意,它是一个聚合函数,因此您无法使用where
子句对其应用条件 - 您需要使用having
子句:
SELECT student.first_name, student.last_name, AVG(mark) avg_mark
FROM subject
JOIN student on student.ID = subject.stud_id
JOIN marks on marks.id = subject.mark_id
GROUP BY student.first, student.last
HAVING AVG(mark) > 8.5