select a.name,b.name,a.salary,row_number() over (partition by b.name order by a.salary) as rn from a left join b on a.id = b.aid
解析:row_number() over (partition by b.name order by a.salary) as rn
1.簡單的說row_number()從1開始,為每一條分組記錄返回乙個數字,這裡的row_number() over (order by xlh desc) 是先把xlh列降序,再為降序以後的沒條xlh記錄返回乙個序號。
2.row_number() over (partition by col1 order by col2) 表示根據col1分組,在分組內部根據 col2排序,而此函式計算的值就表示每組內部排序後的順序編號(組內連續的唯一的)
SQL實現group by 分組後組內排序
在乙個月黑風高的夜晚,自己無聊學習的sql的時候,練習,突發奇想的想實現乙個功能查詢,一張成績表有如下字段,班級id,英語成績,資料成績,語文成績如下圖 實現 查詢出 每個班級英語成績最高的前兩名的記錄。看起來不難的業務,做起來才知道還挺麻煩的,說白了其實就是實現分組後的組內排序,一般不思考的話我們...
ZR954 分組(排序 dp)
共有 n nn 人報名了招聘,第 i ii 個人的工作經驗為 w iw i wi 薪水為 s is i si 要招聘 2 k 2 times k 2 k 個人,並將這些人分為 k kk 組,每組兩個人。乙個人為組長,而另乙個人為組員。對於每個組,要求組長的工作經驗不小於組員的工作經驗。每個應聘者會有...
ZR954 分組(排序 dp)
共有 n nn 人報名了招聘,第 i ii 個人的工作經驗為 w iw i wi 薪水為 s is i si 要招聘 2 k 2 times k 2 k 個人,並將這些人分為 k kk 組,每組兩個人。乙個人為組長,而另乙個人為組員。對於每個組,要求組長的工作經驗不小於組員的工作經驗。每個應聘者會有...