天地不仁,以万物为刍狗!
db2 分析函数的一篇文章
上一篇 /
下一篇 2008-01-18 09:05:57
/ 个人分类:db2
--OLAP:DB2® Universal Database 中引入的在线分析处理(OLAP)函数,这些函数扩展了关系模型、使关系模型能够理解行集合内的排序方式(ordering)。ITPUB个人空间DB,bFA){Sx
排列函数第一类引入到 DB2 中的 OLAP 函数是 排列(ranking)函数,它们是在 DB2 Version 6 中引入的。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力。例如,假设我们有一个雇员表,现在要对每个部门内的雇员薪水进行排列。要实现这一点,我们需要一个函数调用,这个函数调用可以完成以下工作:ITPUB个人空间 ??|V'R
将分区(集合)定义为各个部门,将集合内的排序方式定义为按薪水排序。 按照惯例,我们一般会将薪水高的排在前面,所以我们将指定一个对薪水的降序排序方式。下面的例子展示了这个查询的查询和输出。
nRQ IABWJo$E-[Q0select 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;
(p$t?!@
Z0ITPUB个人空间0Z$n7l!|Q
EMPNUM DEPT SALARY RANK DENSERANK ROWNUMBER
rmYS3i
g0------ ---- ------ ---- --------- ---------
]f
v u p06 1 78000 1 1 1ITPUB个人空间][]:zUTqL
2 1 75000 2 2 2
:W5^r&l;O"vO }07 1 75000 2 2 3ITPUB个人空间u4t'}~1\ G'B9x
11 1 53000 4 3 4ITPUB个人空间{+pDCHV5ZI
5 1 52000 5 4 5
N(N8AX%OM0`)j }S01 1 50000 6 5 6
"?n o-nPDrL%C['{0--------------------------------------------------