[SQL ] 找出每個科目最高成績的學生名及成績

看板Database (資料庫)作者 (社會黑暗、行路難)時間5年前 (2019/10/21 00:04), 編輯推噓1(103)
留言4則, 2人參與, 5年前最新討論串1/3 (看更多)
資料庫名稱:無 資料庫版本:無 內容/問題描述:(這是一個考題) 有一張成績表為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

10/21 00:53, 5年前 , 1F
先做一個查詢取出各科及對應最高成績, 再join原成績表
10/21 00:53, 1F

11/26 14:56, 5年前 , 2F
RANK() OVER Partition by CNO order by degree 在
11/26 14:56, 2F

11/26 14:56, 5年前 , 3F
找Rank=1即可 這樣應該可以
11/26 14:56, 3F

11/26 14:57, 5年前 , 4F
ORDER BY記得加DESC
11/26 14:57, 4F
文章代碼(AID): #1Th8MD9k (Database)
文章代碼(AID): #1Th8MD9k (Database)