入职后回顾数据库知识(六)
程序员文章站
2022-03-11 21:37:25
NVL()函数:NVL(expr1,expr2)--如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。NVL2()函数:NVL2(expr1,expr2,expr3)--含义是:如果Oracle中第一个参数的值为空,那么显示第二个参数的值,如果第一个参数的值不为空,那么显示第三个参数的值。NULLIF()函数:NULLIF(expr1,expr2)--含义是:如果第一个参数的值等于第二个参数的值则返回空,否则返回第一个值。ROW...
NVL()函数:
NVL(expr1,expr2)
--如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
NVL2()函数:
NVL2(expr1,expr2,expr3)
--含义是:如果Oracle中第一个参数的值为空,那么显示第二个参数的值,如果第一个参数的值不为空,那么显示第三个参数的值。
NULLIF()函数:
NULLIF(expr1,expr2)
--含义是:如果第一个参数的值等于第二个参数的值则返回空,否则返回第一个值。
ROWNUMBER() OVER PARTISTION BY() 分组聚合:
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()排序功能:
在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。
partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。
本文地址:https://blog.csdn.net/Guo_Yu_tian/article/details/107641971