row number over partition by 的用法
时间: 2023-10-13 20:28:38 浏览: 90
ROW_NUMBER()
是一个窗口函数,用于给每一行分配一个唯一的序号,通常用于排名或分组等场景。OVER
子句是用来定义窗口范围的,可以按照指定的列或表达式进行分区,并按照指定的排序方式进行排序。
OVER
子句的语法格式为:
OVER (
[PARTITION BY partition_expression1, partition_expression2, ...]
ORDER BY sort_expression1 [ASC|DESC], sort_expression2 [ASC|DESC], ...
[ROWS BETWEEN window_frame_start AND window_frame_end]
)
其中,PARTITION BY
子句用于按照指定的列或表达式进行分区,相当于对分组进行操作。ORDER BY
子句用于指定排序方式,如果不指定排序方式,默认按照升序排序。ROWS BETWEEN
子句用于指定窗口范围,可以按照行数或者物理位置进行指定。
使用 ROW_NUMBER()
函数时,通常会结合 OVER
子句进行使用,以便对数据进行分组、排序和分配序号等操作。例如:
SELECT
name,
score,
ROW_NUMBER() OVER (PARTITION BY subject ORDER BY score DESC) AS rank
FROM
scores;
上面的 SQL 查询语句中,PARTITION BY
子句指定按照科目进行分组,ORDER BY
子句指定按照成绩降序排序,然后使用 ROW_NUMBER()
函数为每个分组内的行分配一个唯一的序号。
相关推荐


















