函数
1. 数字函数
nvl(目标字段,默认值)
--判断目标字段里面是否为空,如果不为空,则取目标字段的值,如果为空,则赋一个默认值
abs(x) --返回绝对值
mod(x,y) --返回x除以y的余数
power(x,y) --返回x的y次方
ceil(x) --向上取整
floor(x) --向下取整
round(x,y) --
trunc(x,y) --y的界限为小数点...断x在第y后的数字,把y位之后的数字全干掉(全换成0)
2. 字符函数
add_months(d,n) --返回日期d加上n个月后的日期
last_day(d) --返回d所处月份的最后一天的日期
months_between(d1,d2) --返回两个日期之间相隔几个月
round(d[,fmt])
--对日期d按照不同维度(fmt:yyyy/mm/dd/day[星期]/q[季度]/w[当月第几周]/iw[今年第几周1]/ww[今年第几周2])来进行四舍五入
trunc(d[,fmt]) --对日期d按照不同维度(fmt)来截断,维度参照fmt
3. 日期函数
add_months(d,n) --返回日期d加上n个月后的日期
last_day(d) --返回d所处月份的最后一天的日期
months_between(d1,d2) --返回两个日期之间相隔几个月
round(d[,fmt])
--对日期d按照不同维度(fmt:yyyy/mm/dd/day[星期]/q[季度]/w[当月第几周]/iw[今年第几周1]/ww[今年第几周2])来进行四舍五入
trunc(d[,fmt]) --对日期d按照不同维度(fmt)来截断,维度参照fmt
4. 聚合函数
max()
min()
avg()
sum()
count()
5. 分析函数
a. 聚合类分析函数
聚合函数名(目标字段)over(partition by...order by...desc/asc)
1
b. 排名类分析函数
row_number()over() --不计算相同数据,排名依次往后。1234
rank()over() --计算想要的数据,相同的数据排名一样,并空出后继续排名。1224
dense_rank()over()--计算相同的数据,相同的数据排名一样,但是不空出后续排名。1223
order by 后面的字段就是排名的依据,所以它一定有 order by
c. 位移类分析函数
lag()over([partition by...]order by...) --向上位移
lead()over([partition by...]order by...) --向下位移
可以实现行列转换
6. 几个判断函数
nvl(目标字段,默认值)
--判断目标字段是否为空,如果不为空,则取目标字段的值,如果为空,则赋默认值
nvl2(目标字段,默认值1,默认值2)
--判断目标字段是否为空,如果不为空,则取默认值1,为空取默认值2
case when...then...else...end --对某一列数据进行判断,返回一列数据
decode(目标字段,值1,结果1,值2,结果2...,其他结果)
--oracle独有。作用类似case...when
exists(x)
--判断x是否有数据返回,如果有则成立,没有则不成立。一般x为子查询结果
not exists(x)
in()
not in()
#exists和in可以相互转换
sign() ---判断结果集,返回0,1,-1




