- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Copyright: Silberschatz, Korth and Sudarshan 第22章: 高级查询与信息检索 决策支持系统 决策支持系统: 概述 数据分析与OLAP 由item-name和color组成的sales交叉表 交叉表的关系表示 三维数据立方体 联机分析处理 维层次 有层次的交叉表 OLAP实现 OLAP实现(续) 早期的OLAP系统预先计算所有可能的合计以便提供联机响应 这样做对空间和时间的需求很高 group by有2n 种组合 只需预先计算某些合计, 其他合计可以在需要时从预先计算的合计结果计算得到 可以从(item-name, color, size)上的合计计算出(item-name, color)上的合计 除了少数“非可分解” 合计, 如中位数 比从头开始计算廉价 计算多种合计时有若干优化方法 可以从(item-name, color, size)上的合计计算出(item-name, color)上的合计 可以利用基本数据的一次排序计算 (item-name, color, size), (item-name, color)和(item-name)上的合计 扩展合计 SQL-92的合计功能很有限 许多有用的合计要么很难要么不可能说明 数据立方体 复杂合计 (中位数, 方差) 二元合计 (相关性, 回归曲线) 排位查询 (“根据总分对学生排位”) SQL:1999的OLAP扩展提供了若干合计函数来解决上述限制 已被一些数据库支持, 包括Oracle和 IBM DB2 SQL:1999中的扩展合计功能 扩展合计功能(续) 如前所述的交叉表的关系表示可以如下计算, 只是用null 代替all select item-name, color, sum(number) from sales group by cube(item-name, color) 函数grouping()可作用于属性 若属性值是代表all的空值, 则返回1; 其他情况返回0. select item-name, color, size, sum(number), grouping(item-name) as item-name-flag, grouping(color) as color-flag, grouping(size) as size-flag,from salesgroup by cube(item-name, color, size) 在select子句中可使用函数decode() 来将这种空值替换为all之类的值 例如将第一个查询中的item-name 替换成 decode( grouping(item-name), 1, ‘all’, item-name) 扩展合计功能 (续) 扩展合计功能(续) 排位 排位(续) 排位可以在数据分组内进行. “求每个组内学生的排位.” select student-id, section, rank ( ) over (partition by section order by marks desc) as sec-rankfrom student-marks, student-sectionwhere student-marks.student-id = student-section.student-idorder by section, sec-rank 单个select子句中可以出现多个rank子句 排位是在group by子句/合计之后进行的 练习: 求前n 名学生 对“top-n”查询, 许多系统提供特殊的(非标准的)语法 按不同课程的总分排位 给定关系student-course-marks(student-id, course, marks) 排位(续) SQL:1999中的其他排位函数: percent_rank (如果有分组, 可求组内排位) 对n个元组中的第r名定义为(r – 1)/(n – 1) cume_dist (cumulative distribution) 排在本元组前面的元组(含本元组)数在总元组数中所占比例 row_number 对元组排序并求行号(当出现重复元组时行号有不确定性) SQL:1999允许用户说明nulls first或nulls last select student-id, rank ( ) over (order by marks desc nulls last) as s-rankfrom student-marks 排位(续) Windowing 窗口(续) 可以在划分内部分窗口 例如给定关系transa
文档评论(0)