oracle中实用的函数

1.窗口函数:over
(1)lag()/lead() over()分析函数
lag函数是按id倒序排序把上一行的age记录显示在当前行的列lag,为null显示null;
lead函数是按id倒序排序把下一行的age记录显示在当前行的列lag,为null显示null

(2)排序编号的使用
row_number()/rank()/dense_rank() OVER(PARTITION BY… ORDER BY…)

(3)聚合函数等的配合使用
sum() ,first_value()、last_value()、count()、min()、max()等。
sum() over()分组求和
first_value() over()求分组第一条
last_value() over()求分组最后一条

(4)其他特殊情况
over(order by salary range between 50 preceding and 150 following)
每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
over(order by salary rows between 50 preceding and 150 following)
每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)
每行对应的数据窗口是从第一行到最后一行,等效:
over(order by salary range between unbounded preceding and unbounded following)

2.group by rollup(a,b):分组三次
第一次,a,b两个约束条件,即a相同,b也相同的分为同一组;
第二次,只是用a一个条件进行分组,把上一次形成的结果在进行分组,把a相同的分为一组;
第三次,没有约束条件,将整个表数据分为一组
这样三次之后,我们就有了三个分组条件,那么sum函数,就会给每一个分组都执行一次计算总和。
如:group by rollup(group_id) ,按照小组进行分组,同时求总计
GROUPING函数:如果显示“1”表示GROUPING函数对应的列(例如JOB字段)是由于ROLLUP函数所产生的空值
对应的信息,即对此列进行汇总计算后的结果。如果显示“0”表示此行对应的这列参未与ROLLUP函数分组汇总活动。

3.行转列 pivot函数
select * from (temp)
pivot(max(DETAIL_ADDRESS)
for dr in(1 as “ADDRESS_1”, 2 as “ADDRESS_2”, 3 as “ADDRESS_3”))
4.列转行 UNPIVOT函数
select * from aaa
pivot (sum(er) for th in (‘COL_1’ as 第一列,'COL_2’as 第二列 ,‘COL_3’ as 第三列))
unpivot ( aa for bb in(第一列,第二列,第三列));

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值