oracle分析函数 子查询,Oracle之数据操作__子查询_分析函数

一. 分析函数主要语法

传统SQL的问题:

87399a30356948cc962b6bf32e23a607.png

基本语法:

2479c451af20096b5a5a5f9caffe3931.png

组合顺序:

60eb0faa639e9f70e8b2df2848aa5880.png

1. 使用PARTITION子句

SELECT did,ename,sal,

SUM(sal) OVER (PARTITION BY did) sum

FROM emp;

9c9d9695a813e087a3bca168bbedbcd5.png

2. 不适用PARITION进行分区,直接利用OVER子句操作

SELECT did,ename,sal,

SUM(sal) OVER () sum

FROM emp;

b8dac59bf40d44518b565329cc04f0b8.png

3. 通过PARTITION设置多个分区字段

SELECT did,ename,sal,job,

SUM(sal) OVER (PARTITION BY did,job) sum

FROM emp;

2d136078ac7b26db4cdbe4b33be184e2.png

4. 观察ORDER BY 子句

SELECT did,ename,sal,

RANK() OVER (PARTITION BY did ORDER BY sal DESC) rk

FROM emp

7475ef96e3443f7a008ec67ca70e4787.png

# ORDER BY 子句的作用主要就是进行排序,但是现在实现的是分区内数据的排序,而这个会直接影响到最终得到查询结果

5. 直接利用 ORDER BY 排序所有数据

SELECT did,ename,sal,hiredate,

SUM(sal) OVER (ORDER BY ename DESC) sum

FROM emp;

9dfc28a85f78f5b8cb9dfb673fd6283c.png

6, ORDER BY 子句选项:

5496da7eb44fffe9f152bbb6c80037e7.png

6.1 null在前

SELECT did,ename,sal,comm,

RANK() OVER (ORDER BY comm DESC) rk,

SUM(sal) OVER (ORDER BY comm DESC) sum

FROM emp;

f75f37df7249783cae9fcd03c90e3da3.png

6.2 null在后

SELECT did,ename,sal,comm,

RANK() OVER (ORDER BY comm DESC NULLS LAST) rk,

SUM(sal) OVER (ORDER BY comm DESC NULLS LAST) sum

FROM emp;

89646ef57d7e27487277ec344bdf76e2.png

二. 分窗操作的使用

WINDOWING子句:

c0c1e3744acacbc1778fcf2c8e29bb43.png

三. 了解基本分析函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值