首页 > 数据库 > Oracle > Oracle分析函数-5
1. first_value()和last_value()
select fire_date,deptno,sum(sal),
first_value(sum(sal)) over(partition by fire_date order by sum(sal)) fir_sale,
first_value(sum(sal)) over(partition by fire_date order by sum(sal) desc) last_sale
from hyf_t
group by fire_date, deptno
FIRE_DATE | DEPTNO | SUM(SAL) | FIR_SALE | LAST_SALE |
200502 | 0 | 50 | 50 | 54 |
200502 | 1 | 51 | 50 | 54 |
200502 | 2 | 52 | 50 | 54 |
200502 | 3 | 53 | 50 | 54 |
200502 | 4 | 54 | 50 | 54 |
200503 | 1 | 101 | 101 | 250 |
200503 | 0 | 250 | 101 | 250 |
200504 | 2 | 102 | 102 | 104 |
200504 | 3 | 103 | 102 | 104 |
200504 | 4 | 104 | 102 | 104 |
显示每月每部门SAL汇总,及SAL最高和最低的部门
first_value() 指的是分组排序后该组的第一条记录,而last_value()指的是分组排序后该组的最后一条记录.2. RANGE和ROWS参数的指定(必须与ORDER BY 一起使用)
前面我们所进行的操作都是当前行与该行前面的所有行进行了比较. 可我们有时候需要当前行与该行前面的N行范围进行比较即可. 这里需要RANGE和ROWS参数; rows和 ange 用法基本有以下四种,
rows 2 preceding 表示当前行以前该行的前两行
rows between 2 preceding and 2 following 表示当前行,该行的前两行以及该行的后丙行
range 20 preceding 表示当前行以前该行以前值范围在20以内的.
range between 50 preceding and 10 following表示当前行以前该行以前和该行以后值范围在50和10以内的.例:
select deptno,ename,sal,
min(sal) over(partition by deptno order by sal rows 2 preceding) min_sal,
count(*) over(partition by deptno order by sal rows between 2 preceding and 2 following) count1,
max(sal) over(partition by deptno order by sal range 20 preceding ) max_sal,
count(*) over(partition by deptno order by sal range between 50 preceding and 10 following) count_sal
from hyf_t
DEPTNO | ENAME | SAL | MIN_SAL | COUNT1 | MAX_SAL | COUNT_SAL |
0 | I_CDEF1 | 50 | 50 | 3 | 50 | 1 |
0 | TRUSTED_LIST$ | 100 | 50 | 4 | 100 | 2 |
0 | AUDIT$ | 150 | 50 | 4 | 150 | 2 |
0 | JOBSEQ | 200 | 100 | 3 | 200 | 2 |
1 | I_CDEF2 | 51 | 51 | 3 | 51 | 1 |
1 | PROPS$ | 101 | 51 | 4 | 101 | 2 |
1 | I_AUDIT | 151 | 51 | 4 | 151 | 2 |
1 | JOB$ | 201 | 101 | 3 | 201 | 2 |
2 | I_CDEF3 | 52 | 52 | 3 | 52 | 1 |
2 | COM$ | 102 | 52 | 4 | 102 | 2 |
2 | PENDING_TRANS$ | 152 | 52 | 4 | 以上MIN_SAL显示了分组该行以及前两行中最小的值. COUNT1显示了分组该行以及前后两行中的累计 Max_SAL显示了分组该行以前范围在20之前的最大值 来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/703656/viewspace-972638/ ,如需转载,请注明出处,否则将追究法律责任。
上一篇:
Oracle分析函数-4
下一篇:
Oracle分析函数-6
请登录后发表评论
登录
全部评论
|