NVL(expr1,expr2)
--如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
NVL2(expr1,expr2,expr3)
--含义是:如果Oracle中第一个参数的值为空,那么显示第二个参数的值,如果第一个参数的值不为空,那么显示第三个参数的值。
NULLIF(expr1,expr2)
--含义是:如果第一个参数的值等于第二个参数的值则返回空,否则返回第一个值。
ROW_NUMBER() OVER(
[PARTITION BY column_1, column_2,…]
[ORDER BY column_3,column_4,…]
)
分组聚合,就是先分组再排序,可以的话顺手标个排名;如果不想分组也可以排名;如果不想分组同时再去重排名也可以
select row_number() over(partition by A order by B ) as rowIndex from table
A:为分组字段
B:为分组后的排序字段。
table 表的结构 多为: 多人 多条的相关数据。(比如:订单信息)
此条sql语句,多用于对数据进行分组排序,并对每个组中的数据分别进行编号,编号从1开始递增,每个组内的编号不会重复;
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。
partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。
本文地址:https://blog.csdn.net/Guo_Yu_tian/article/details/107641971
如对本文有疑问, 点击进行留言回复!!
Oracle GoldenGate(基于日志的结构化数据复制软件使用)
创建线程的两个方法(Oracle官网说两种,所以我们就别说什么三种四种了)
网友评论