row_number() over()分组排序功能:
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。
partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。
代码示例
SELECT 字段1,字段2.. from (
SELECT row_number() over ( PARTITION BY 分组字段 ORDER BY 排序字段 DESC
)
SELECT row_number() over ( PARTITION BY oper_sn ORDER BY data_getdatetime DESC ) AS snt, oper_sn, corp_fullname,data_getdatetime FROM c_cur_jobinfo
筛选后取最新一条如下:
SELECT
t.snt,oper_sn,
corp_fullname ,data_getdatetime
FROM
( SELECT row_number() over ( PARTITION BY oper_sn ORDER BY data_getdatetime DESC ) AS snt, oper_sn, corp_fullname,data_getdatetime FROM c_cur_jobinfo ) t
WHERE
t.snt =1