天地不仁,以万物为刍狗!
db2 分析函数的一篇文章
上一篇 /
下一篇 2008-01-18 09:05:57
/ 个人分类:db2
--OLAP:DB2® Universal Database 中引入的在线分析处理(OLAP)函数,这些函数扩展了关系模型、使关系模型能够理解行集合内的排序方式(ordering)。ITPUB个人空间{k5\"x W'u IBE/K]
排列函数第一类引入到 DB2 中的 OLAP 函数是 排列(ranking)函数,它们是在 DB2 Version 6 中引入的。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力。例如,假设我们有一个雇员表,现在要对每个部门内的雇员薪水进行排列。要实现这一点,我们需要一个函数调用,这个函数调用可以完成以下工作:ITPUB个人空间p"J%K(k
g&h`S&I\
将分区(集合)定义为各个部门,将集合内的排序方式定义为按薪水排序。 按照惯例,我们一般会将薪水高的排在前面,所以我们将指定一个对薪水的降序排序方式。下面的例子展示了这个查询的查询和输出。
B.{*n'Q,]Fk(N0select empnum, dept, salary, rank() over (partition by dept order by salary desc nulls last) as rank, dense_rank() over (partition by dept order by salary desc nulls last)as denserank, row_number() over (partition by dept order by salary desc nulls last)as rownumber from emptab;ITPUB个人空间1fY?Ah9Jc|1M:W([
:gM'a3f(SP9Y#J$n-y2t0EMPNUM DEPT SALARY RANK DENSERANK ROWNUMBER
u7X8T9CqA.S2j0------ ---- ------ ---- --------- ---------
.B:N"q |vn06 1 78000 1 1 1ITPUB个人空间
^*I%q.B b$~
2 1 75000 2 2 2
Fwtw,sf;p Y"M07 1 75000 2 2 3
-|0],P:A'^F/I\ sL011 1 53000 4 3 4
u!Xl"l!R`05 1 52000 5 4 5ITPUB个人空间UJ{}#]'i3a
1 1 50000 6 5 6
[2}N7Wv;G"i0--------------------------------------------------
p7W1t4} JoP e,U09 2 51000 1 1 1ITPUB个人空间;Hiy5T
g
4 2 - 2 2 2