SQLServer的PARTITION_BY进行分区查询
前言
假设有一个用户表admin(id, name, sex)
, 现在有个需求。
是按照性别sex
进行分区, 然后排序。
比如有以下数据
1 | id name sex(1男2女) |
要求查询性别sex
进行分区, 然后排序。
1 | id name sex(1男2女) row_num |
使用ROW_NUMBER进行排序
首先获取行数, SQLServer
提供了ROW_NUMBER
函数。
1 | select tmp.*, ROW_NUMBER() over(order by tmp.id asc) as row_num |
1 | id name sex(1男2女) row_num |
但是需求是, 根据sex
分区排序, 所以添加一个partition by
关键字。
使用PARTITION BY进行分区
1 | select tmp.*, ROW_NUMBER() over(partition by sex order by tmp.id asc) as row_num |
1 | id name sex(1男2女) row_num |
完成, 此外还可以用来做分区求和等功能。