看板 Database 關於我們 聯絡資訊
資料庫名稱:無 資料庫版本:無 內容/問題描述:(這是一個考題) 有一張成績表為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