partition by sql
时间: 2023-08-08 17:10:59 浏览: 96
SQL Server 总结复习 (二)
在SQL中,PARTITION BY子句用于将结果集划分为多个分区,并在每个分区内进行排序。这样可以对每个分区内的行分配唯一的行号。语法如下:
ROW_NUMBER() OVER (\[<partition_by_clause>\] <order_by_clause>)
其中,<partition_by_clause>用于指定分区的字段或表达式,<order_by_clause>用于确定在每个分区中为行分配行号的顺序。返回的行号类型为bigint。
举个例子,如果我们想要获取每个订单号(ORDERNO)分组中的第一条记录,可以使用以下SQL语句:
SELECT *
FROM (
SELECT A.*, ROW_NUMBER() OVER(PARTITION BY A.ORDERNO ORDER BY A.SPARE2 ASC) AS NEWINDEX
FROM BYL_TEST A
)
WHERE NEWINDEX = 1
这样就可以得到每个订单号分组中的第一条记录。使用PARTITION BY相比GROUP BY,可以在保留全部数据的基础上,只对某些字段进行分组排序,而GROUP BY只保留参与分组的字段和聚合函数的结果。
#### 引用[.reference_title]
- *1* *2* *3* [SQL分组获取记录的第一条数据——PARTITION BY](https://blog.csdn.net/qq_25623257/article/details/107934502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文