看板 Database 關於我們 聯絡資訊
內容/問題描述: 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 ; -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.194.210 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1601236822.A.6F9.html
criky: 把三個成績弄在同一個欄位,再試試看AVG 09/28 13:23
MOONY135: Having 09/28 23:37
MOONY135: Avg(ch)+Avg(math)+....看看吧 09/28 23:48
MOONY135: 或者avg(sum()) 09/28 23:48
wwfroaddogg: 有試過,執行出現聚合函數內不能再有聚合函數。 09/29 08:21
moyasi: http://sqlfiddle.com/#!4/74123/1 09/29 11:27
tedcat: 把國英數欄位拆成三個表,做union讓他變成都在一個欄位, 09/30 17:13
tedcat: 然後再用group by avg 09/30 17:13
※ 編輯: wwfroaddogg (111.254.196.122 臺灣), 10/01/2020 15:45:43