1. 程式人生 > >今天認識了下partition by 和group by

今天認識了下partition by 和group by

今天學習Oracle  sql語句時碰到了這樣的題目:

查詢各科成績前三名的記錄:(不考慮成績並列情況)

略看題目,以為能弄出來,下手寫時才發現不是那樣的

經過一番查閱後,才知道,還有partition by這個分割槽函式,這個函式貌似和group by 差不多,但仔細分析,partition卻能做到group by不能做到的功能,比如說這題:

答案這樣的:select * from  (select sno,cno,score ,row_number() over (partition by cno order by score desc)rn from sc) where  rn<4;

原來,partition 能按照指定的列把查詢結果集給分成不同的區

暫時只理解到這裡,以後在重新理理吧!