上一篇 | 下一篇

Bob Lyle 谈 DB2 中的 OLAP 函数

发布: 2008-7-01 13:41 | 作者: admin | 来源: | 查看: 0次

Bob Lyle 谈 DB2 中的 OLAP 函数

热 荐

【字体:小 大】

Bob Lyle 谈 DB2 中的 OLAP 函数

作者:- 文章来源:- 点击数:1180 更新时间:2006-4-22

Bob Lyle

DB2 开发人员, IBM

2003 年 10 月 经验丰富的 DB2 开发人员 Bob Lyle 非常粗略地概述了 DB2 Universal Database 中强大的 OLAP 函数,并提供了关于如何使用这些函数的例子。

当我出席在佛罗伦萨召开的 IDUG EMEA 时,我惊讶地发现很少有用户对在 DB2® Universal Database 中引入的在线分析处理(OLAP)函数有较多的了解。虽然从表面上看这些函数只是一些简单的新函数,然而实际上它们是极其强大的。这种强大是建立在这些函数扩展了关系模型、使关系模型能够理解行集合内的排序方式(ordering)这一基础之上的。在此之前,如果您想执行任何与排序方式(按日期排序或其他方式的排序)有关的分析,您就不得不编写非常复杂的查询。现在,有了 OLAP 函数,这种复杂性大大减少了。在本文中,我希望对某些已经实现的函数给出一个非常粗略的概述,并提供一些关于如何使用这些函数的例子。本文中包括的所有函数都已经在 OLAP 修订案中标准化成 SQL99 标准。

排列函数

第一类引入到 DB2 中的 OLAP 函数是 排列(ranking)函数,它们是在 DB2 Version 6 中引入的。这些排列函数提供了定义一个集合(使用 PARTITION 子句),然后根据某种排序方式对这个集合内的元素进行排列的能力。例如,假设我们有一个雇员表,现在要对每个部门内的雇员薪水进行排列。要实现这一点,我们需要一个函数调用,这个函数调用可以完成以下工作: 将分区(集合)定义为各个部门 将集合内的排序方式定义为按薪水排序。

按照惯例,我们一般会将薪水高的排在前面,所以我们将指定一个对薪水的降序排序方式。下面的例子展示了这个查询的查询和输出。

select 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;

字号: | 推荐给好友

31/3123>

评分:0

我来说两句