ROW NUMBER OVER函式運用

2022-07-15 08:24:09 字數 1952 閱讀 4277

語法:row_number() over(partition by column order by column)

partition by:相當於資料庫中的group by

說明:row_number() over (partition by col1 order by col2) 表示根據col1分組,在分組內部根據 col2排序,而此函式計算的值表示每組排序後的順序編號(從1開始,組內連續的唯一的編號)

--新建表table_a

create table table_a(name varchar(8),subject varchar(8),grade int)

insert into table_a values('小a','數學',90)

insert into table_a values('小a','語文',79)

insert into table_a values('小a','英語',88)

insert into table_a values('小b','數學',99)

insert into table_a values('小b','語文',76)

insert into table_a values('小b','英語',82)

insert into table_a values('小c','數學',78)

insert into table_a values('小c','語文',67)

insert into table_a values('小c','英語',81)

insert into table_a values('小d','數學',93)

insert into table_a values('小d','語文',75)

insert into table_a values('小d','英語',84)

--原始表

select * from table_a

name

subject

grade

小a數學

90小a

語文79

小a英語

88小b

數學99

小b語文

76小b

英語82

小c數學

78小c

語文67

小c英語

81小d

數學93

小d語文

75小d

英語84

--執行以下語句後

select row_number() over(partition by name order by grade desc) as id,name,subject,grade from table_a

idname

subject

grade1小a

數學902小a

英語883小a

語文791小b

數學992小b

英語823小b

語文761小c

英語812小c

數學783小c

語文671小d

數學932小d

英語843小d

語文75

--根據欄位name分組,grade排序

--提取成績中的最大值,可用以下語句

select * from

(select row_number() over(partition by name order by grade desc) as id,name,subject,grade from table_a

)tt where id = 1

--每名學生,只顯示前2單成績,修改**為以下即可

select * from

(select row_number() over(partition by name order by grade desc) as id,name,subject,grade from table_a

)tt where id between 1 and 2

row number over 分析函式

今天用到了row number over 現在就以知識點的形式總結一下,以便於以後的回顧。參考資料msdn 語法 row number over partition by value expression n order by clause 通過語法可以看出 over裡有兩個引數,partition...

row number over 分析函式

今天用到了row number over 現在就以知識點的形式總結一下,以便於以後的回顧。參考資料msdn 語法 row number over partition by value expression n order by clause 通過語法可以看出 over裡有兩個引數,partition...

ROW NUMBER OVER 函式用法詳解

語法格式 row number over partition by 分組列 order by 排序列 desc row number over 分組排序功能 在使用 row number over 函式時候,over 裡頭的分組以及排序的執行晚於 where group by order by 的執...