[SQL ] 同一列的资料用AVG平均

楼主: wwfroaddogg (猛获)   2020-09-28 04:00:20
内容/问题描述:
108 年 - 高雄市高中教师联招甄选-资料处理科 考试题目
有两个资料表
STUDENT(SID,NAME,SEX,AGE,HEIGHT)
SCORE(SID,CHI,ENG,MATH)
题目要求列出资料字段 SID、NAME、AVG 及其字段纪录,
筛选条件:平均成绩(AVG)为国文(CHI)、英文(ENG)、数学(MATH)
三科成绩的平均数值(需使用 AVG 函数),平均成绩(AVG)数值应大 于 70 分。
小弟我一开始没看清楚题目有要求用AVG函数
SELECT STUDENT.SID,
STUDENT.NAME,
(SCORE.CHI+SCORE.ENG+SCORE.MATH)/3 AS AVG
FROM STUDENT,SCORE
WHERE STUDENT.SID = SCORE.SID
AND (SCORE.CHI+SCORE.ENG+SCORE.MATH)/3 > 70 ;
看清楚题目要求后,不知道该怎么用AVG函数来写
SELECT STUDENT.SID,
STUDENT.NAME,
AVG(SCORE.CHI+SCORE.ENG+SCORE.MATH) AS AVG
FROM STUDENT,SCORE
WHERE STUDENT.SID = SCORE.SID
GROUP BY STUDENT.SID, STUDENT.NAME
HAVING AVG(SCORE.CHI+SCORE.ENG+SCORE.MATH) > 70 ;
这样写出来的结果是该学生的三科成绩相加...
请各位高手指导
感恩感谢
2020.10.01 更新
SELECT A.SID,ST.NAME,AVG(A.SS) AS 'AVG'
FROM (
SELECT SID,CHI AS SS FROM SCORE
UNION
SELECT SID,ENG AS SS FROM SCORE
UNION
SELECT SID,MATH AS SS FROM SCORE ) AS A , STUDENT AS ST
WHERE A.SID=ST.SID
GROUP BY A.SID,ST.NAME
HAVING AVG(A.SS)>70
;
作者: criky (2501-2)   2020-09-28 13:23:00
把三个成绩弄在同一个字段,再试试看AVG
作者: MOONY135 (谈无欲)   2020-09-28 23:37:00
HavingAvg(ch)+Avg(math)+....看看吧或者avg(sum())
楼主: wwfroaddogg (猛获)   2020-09-29 08:21:00
有试过,执行出现聚合函数内不能再有聚合函数。
作者: moyasi (Simple Life)   2020-09-29 11:27:00
作者: tedcat (动静:MSN暱称为主)   2020-09-30 17:13:00
把国英数字段拆成三个表,做union让他变成都在一个字段,然后再用group by avg

Links booklink

Contact Us: admin [ a t ] ucptt.com