作者paranoia5201 (社會黑暗、行路難)
看板Database
標題[SQL ] 找出每個科目最高成績的學生名及成績
時間Mon Oct 21 00:04:27 2019
資料庫名稱:無
資料庫版本:無
內容/問題描述:(這是一個考題)
有一張成績表為score,其中有三個欄位:課程名稱cno,學生代號sno,修課成績degree。
如何取出各科目最高成績之學生代碼及修課成績?
簡單的想法:
(select cno, sno, max(degree) from score group by cno)
上述結果我不確定sno會是對應出最高分數的學生名嗎?
另一個想法:(未完成)
select * from score order by cno, degree
將成績表以科目與分數排列後,試圖捉出每個科目的最後一欄,
但是就不知道怎麼選出每個科目的最後一欄了......
各科目依照成績排列後的最後一欄,很明顯就是最高成績的學生了。
兩個寫法不曉得是否正確操作,由於這是考題所以無法實作。
還請各位指導,感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.36.225 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1571587469.A.26E.html
→ konkonchou: 先做一個查詢取出各科及對應最高成績, 再join原成績表 10/21 00:53
推 beckhamert: RANK() OVER Partition by CNO order by degree 在 11/26 14:56
→ beckhamert: 找Rank=1即可 這樣應該可以 11/26 14:56
→ beckhamert: ORDER BY記得加DESC 11/26 14:57