[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