一.窗口函数

概念:窗口函数也称为OLPA函数。OLAP 是OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理。

语法:<窗口函数> OVER ([PARTITION BY <列名>] ORDER BY <排序用列名>)

PARTITON BY:用来分组,即选择要看哪个窗口,类似于GROUP BY 子句的分组功能,但是PARTITION BY 子句并不具备GROUP BY 子句的汇总功能,并不会改变原始表中记录的行数。

ORDER:来排序,即决定窗口内,是按那种规则(字段)来排序的。

二.窗口函数总类

RANK函数:计算排序时,如果存在相同位次的记录,则会跳过之后的位次。

DENSE_RANK函数:同样是计算排序,即使存在相同位次的记录,也不会跳过之后的位次。

ROW _NUMBER函数:赋予唯一的连续位次。

聚合函数在窗口函数的使用:

聚合函数在开窗函数中的使用方法和之前的专用窗口函数一样,只是出来的结果是一个累计的聚合函数值。

运行以下代码:

SELECT  product_id,product_name,sale_price,SUM(sale_price) OVER (ORDER BY product_id) AS current_sum,AVG(sale_price) OVER (ORDER BY product_id) AS current_avg  FROM product;

可以看出,聚合函数结果是,按我们指定的排序,这里是product_id,当前所在行及之前所有的行的合计或均值。即累计到当前行的聚合。

三.窗口函数的应用-计算移动平均

语法

<窗口函数> OVER (ORDER BY <排序用列名>ROWS n PRECEDING )  <窗口函数> OVER (ORDER BY <排序用列名>ROWS BETWEEN n PRECEDING AND n FOLLOWING)

PRECEDING(“之前”), 将框架指定为 “截止到之前 n 行”,加上自身行

FOLLOWING(“之后”), 将框架指定为 “截止到之后 n 行”,加上自身行

BETWEEN 1 PRECEDING AND 1 FOLLOWING,将框架指定为 “之前1行” + “之后1行” + “自身”。

窗口函数适用范围和注意事项

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

2.窗口函数OVER 中的ORDER BY子句并不会影响最终结果的排序。

四.GROUPING运算符

计算合计及小计

常规的GROUP BY 只能得到每个分类的小计,有时候还需要计算分类的合计,可以用 ROLLUP关键字。

总结

这章主要讲了窗口函数的用法及使用注意事项,内容少且易理解,非常好。我上课没听懂的内容在这里很快就理解了。

本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 5相关推荐

  1. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 6

    下载相关创建表格和插入数据脚本 大家下载好脚本后,先在MySQL环境中运行create_table.sql脚本,创建数据表,然后解压下载好的data.zip,解压后目录如下: 8-10ccf_offl ...

  2. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 4

    一.表的加减法 表的加法-UNION UNION:UNION等集合运算符通常都会出去重复的的记录 UNION与OR谓词: 对于上边的练习题, 如果你已经正确地写出来查询, 你会发现, 使用 UNION ...

  3. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容task 3

    复杂查询方法-视图.子查询.函数等 一.视图 视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚 ...

  4. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 task 2

    SQL基础查询与排行 一.SELECT语句基础 SELECT语句 SELECT <列名>, FROM <表名>; SELECT子句中列举了希望从表中查询出的列的名称,而FROM ...

  5. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql” Task06学习笔记

    本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql" Task06学习笔 ...

  6. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;

    Task03:复杂查询方法-视图.子查询.函数等 3.1 视图 3.1.1 什么是视图 3.1.2 视图与表有什么区别 3.1.3 为什么会存在视图 3.1.4 如何创建视图 3.1.5 如何修改视图 ...

  7. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;Task3:谓词、CASE

    一. 谓词 1.1 什么是谓词 谓词就是返回值为真值的函数.包括TRUE / FALSE / UNKNOWN. 谓词主要有以下几个: LIKE BETWEEN IS NULL.IS NOT NULL ...

  8. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;Task4:集合运算-JOIN

    一. 连结(JOIN) 前一节我们学习了 UNION和INTERSECT 等集合运算, 这些集合运算的特征就是以行方向为单位进行操作. 通俗地说, 就是进行这些集合运算时, 会导致记录行数的增减. 使 ...

  9. 本笔记为阿里云天池龙珠计划SQL训练营的学习内容1

    第一个任务,DBMS有五个类型,本次课程学习的是关系数据库管理系统的的操作方法.SQL课程以DML为中心讲解.SQL有基本的书写法则,数据库的创建语法为:CREATE DATABASE<数据库名 ...

最新文章

  1. python抓包教程_Python爬虫入门技能:教你通过 Fiddler 进行手机抓包!
  2. css pc和mobile,初识pc端和mobile端CSS适配利器—vw+rem+CSS locks
  3. poj-Scout YYF I
  4. ceph集群简单安装部署(Ubuntu14环境)
  5. activeMQ的三种通讯模式
  6. Nginx 之一:编译安装nginx 1.8.1 及配置
  7. 日文邮件变成乱码解决方案
  8. Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
  9. Java从零开始学三(public class和class)
  10. Message和handler传递对象
  11. ezcad2激光打标软件_振镜篇:激光振镜工作原理
  12. Socket编程入门(一)实现简单的Socket实例
  13. 阻抗匹配及Smith圆图简介笔记
  14. Protocol(一)[概述]
  15. 如何给网站添加CNZZ站长统计功能代码的常用办法
  16. mysql informix_INFORMIX数据库函数
  17. 从零开始学Snaker(一)- 官方项目运行
  18. w7系统事件日志服务器,win7事件查看器里说事件日志服务不可用怎么回事
  19. com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exception
  20. 小米盒子4S Pro好不好,对比当贝盒子B1有什么缺点

热门文章

  1. HTTP代理IP的含义 HTTP代理IP如何使用?
  2. SAP那些事-理论篇-12-SAP五层体系介绍
  3. 远程线程注入DLL到PC版微信
  4. 一起来探讨Javascript垃圾收集机制
  5. 使用memory analyzer分析堆栈内存优化poi excel导入方法
  6. LeetCode:爬楼梯
  7. spring快速入门
  8. 一切前端概念,都是纸老虎
  9. 1430基于51单片机的管道压力检测及泄漏检测Proteus仿真
  10. 200826-阿里云CentOS配置TextLive2020若干细节