使用 row_number() over (partition by 要去重的欄位 order by 排序欄位) 資料庫表結構 學生成績表 UserGrade Id int Checked 主鍵IdName varchar(50) Checked 學生名Course varchar(50) Chec ...
使用 row_number() over (partition by 要去重的欄位 order by 排序欄位)
資料庫表結構 學生成績表 UserGrade
Id int Checked 主鍵Id
Name varchar(50) Checked 學生名
Course varchar(50) Checked 課程名
Score int Checked 分數
有如下數據,
1001 李四 英語 100
1000 張三 語文 80
1004 李四 數學 60
1005 李四 語文 80
1008 張三 英語 60
1007 王五 數學 30
1006 王五 語文 50
1003 王五 英語 50
1002 張三 數學 90
要獲取學生名並去重
select name from ( select name ,row_number() over ( partition by name order by score) rn from UserGrade )as s
where rn=1
其實就是根據名稱進行分組取每組中的第一個
select name ,row_number() over ( partition by name order by score) rn from UserGrade
查詢結果為
李四1
李四 2
李四 3
王五 1
王五 2
王五 3
張三 1
張三 2
張三 3