第8章 SQL高级处理


8-1 窗口函数

  • 什么是窗口函数

    窗口函数也称为OLAP函数。OLAP是Online Analytical Proessing的简称,意思是对数据库数据进行实时分析处理。例如。市场分析、创建财务报表、创建计划等日常性商务工作。窗口函数就是为了实现OLAP而添加的标准SQL功能

  • 窗口函数的语法

    在这里插入图片描述

    • 能够作为窗口函数使用的函数

      窗口函数大体可以分为以下两种:

      • 能够作为窗口函数的聚合函数(SUM/AVG/COUNT/MAX/MIN)
      • RANK、DENSE_RANK、ROW_NUMBER等专用窗口函数
  • 语法的基本使用方法——使用RANK函数

RANK是用来计算记录排序的函数

在这里插入图片描述

  • 窗口函数兼具有GROUP BY子句的分组功能以及ORDER BY子句的排序功能,**但是,PARTITION BY子句并不具备GROUP BY子句的汇总功能。**因此,使用RANK函数并不会减少原表中记录的行数;

  • 通过PARTITION BY分组后的记录集合称为窗口,此处的窗口代表“范围”,这也是“窗口函数”名称的由来

  • 各个窗口在定义上绝对不会包含共通的部分

  • 无需指定PARTITION BY

    在这里插入图片描述

  • 专用窗口函数的种类

    在这里插入图片描述

    由于专用窗口函数无需参数,因此通常括号中都是空的

  • 窗口函数的适用范围

    原则上,窗口函数只能在SELECT子句中使用

    在这里插入图片描述

  • 作为窗口函数使用的聚合函数

    所有的聚合函数都能用作窗口函数,其语法和专用窗口函数完全相同

    在这里插入图片描述

    在这里插入图片描述

    像这样以“自身记录(当前记录)”作为基准进行统计,就是将聚合函数当作窗口函数使用时的最大特征


  • 计算移动平均

    窗口函数就是将表以窗口为单位进行分割,并在其中进行排序的函数。其实其中还包含在窗口中指定更加详细的汇总范围的备选功能,该备选功能中的汇总范围称为框架

    在这里插入图片描述

  • 指定框架(汇总范围)

    在这里插入图片描述

  • 将当前记录的前后行作为汇总对象

    在这里插入图片描述

  • 两个ORDER BY

    OVER子句中的ORDER BY只是用来决定窗口函数按照什么样的顺序进行计算的。对结果的排列顺序并没有影响

    在这里插入图片描述



8-2 GROUPING运算符

在这里插入图片描述

  • 同时得到合计行

    在这里插入图片描述

  • ROLLUP——同时得出合计和小计

    在这里插入图片描述

    • ROLLUP的使用方法

      在这里插入图片描述

    • ROLLUP可以同时得出合计和小计

  • GROUPING函数——让NULL更容易分辨

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

  • CUBE——用数据来搭积木

    所谓CUBE,就是将GROUP BY子句中聚合键的“所有可能组合”的汇总结果集合到一个结果中。

  • GROUPING SETS——取得期望的积木

    GROUPING SETS这个运算符可以用于从ROLLUP或者CUBE的结果中取出部分记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值