ROW_NUMBER() OVER 的基本用法

ROW_NUMBER() OVER是一个很强大的函数,虽然不常用,但是需要的时候觉得很好很强大。


语法:ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)

语法说明:先根据COLUMN1进行分组,然后根据COLUMN2进行排序,值从1开始计算

举例:

表:TABLE_STUDENT

ID NAME MATH ENGLISH
1 张三 98 75
1 张三 88 89
2 李四 68 45
2 李四 77 68
3 王五 99 42

如果我们要在这个表中取每个人MATH成绩最高的那条记录

SELECT * FROM
(
    SELECT ROW_NUMBER() OVER(PARTITION BY ID ORDER BY MATH DESC) RM ,ID,NAME,MATH,ENGLISH 
    FROM TABLE_STUDENT
) WHERE RM = '1'
 
  那么结果为: 
  

RM ID NAME MATH ENGLISH
1 1 张三 98 75
1 2 李四 77 68
1 3 王五 99 42

因此,这个函数在去重方面很好用。

其中 PARTITION BY COLUMN1  可以省略,那么该函数变成了根据COLUMN2进行排序,并给每条记录1个序号,该序号从1开始

你可能感兴趣的:(ROW_NUMBER() OVER 的基本用法)