ITPub博客

首页 > 数据库 > Oracle > Oracle分析函数-5

Oracle分析函数-5

原创 Oracle 作者:Steven1981 时间:2007-09-27 11:38:52 0 删除 编辑
学习笔记[@more@]

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. RANGEROWS参数的指定(必须与ORDER BY 一起使用)

前面我们所进行的操作都是当前行与该行前面的所有行进行了比较. 可我们有时候需要当前行与该行前面的N行范围进行比较即可. 这里需要RANGEROWS参数; rows ange 用法基本有以下四种,

rows 2 preceding 表示当前行以前该行的前两行
rows between
2 preceding and 2 following 表示当前行,该行的前两行以及该行的后丙行
range
20 preceding 表示当前行以前该行以前值范围在20以内的.
range between
50 preceding and 10 following表示当前行以前该行以前和该行以后值范围在5010以内的.:

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博客 ” ,链接:http://blog.itpub.net/703656/viewspace-972638/,如需转载,请注明出处,否则将追究法律责任。

上一篇: Oracle分析函数-4
下一篇: Oracle分析函数-6
请登录后发表评论 登录
全部评论
  • 博文量
    127
  • 访问量
    818821