本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 5
一.窗口函数
概念:窗口函数也称为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相关推荐
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 6
下载相关创建表格和插入数据脚本 大家下载好脚本后,先在MySQL环境中运行create_table.sql脚本,创建数据表,然后解压下载好的data.zip,解压后目录如下: 8-10ccf_offl ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 TASK 4
一.表的加减法 表的加法-UNION UNION:UNION等集合运算符通常都会出去重复的的记录 UNION与OR谓词: 对于上边的练习题, 如果你已经正确地写出来查询, 你会发现, 使用 UNION ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容task 3
复杂查询方法-视图.子查询.函数等 一.视图 视图是一个虚拟的表,不同于直接操作数据表,视图是依据SELECT语句来创建的(会在下面具体介绍),所以操作视图时会根据创建视图的SELECT语句生成一张虚 ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容 task 2
SQL基础查询与排行 一.SELECT语句基础 SELECT语句 SELECT <列名>, FROM <表名>; SELECT子句中列举了希望从表中查询出的列的名称,而FROM ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql” Task06学习笔记
本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql" Task06学习笔 ...
- 本笔记为阿里云天池龙珠计划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 如何修改视图 ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;Task3:谓词、CASE
一. 谓词 1.1 什么是谓词 谓词就是返回值为真值的函数.包括TRUE / FALSE / UNKNOWN. 谓词主要有以下几个: LIKE BETWEEN IS NULL.IS NOT NULL ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容,链接为:https://tianchi.aliyun.com/specials/promotion/aicampsql;Task4:集合运算-JOIN
一. 连结(JOIN) 前一节我们学习了 UNION和INTERSECT 等集合运算, 这些集合运算的特征就是以行方向为单位进行操作. 通俗地说, 就是进行这些集合运算时, 会导致记录行数的增减. 使 ...
- 本笔记为阿里云天池龙珠计划SQL训练营的学习内容1
第一个任务,DBMS有五个类型,本次课程学习的是关系数据库管理系统的的操作方法.SQL课程以DML为中心讲解.SQL有基本的书写法则,数据库的创建语法为:CREATE DATABASE<数据库名 ...
最新文章
- python抓包教程_Python爬虫入门技能:教你通过 Fiddler 进行手机抓包!
- css pc和mobile,初识pc端和mobile端CSS适配利器—vw+rem+CSS locks
- poj-Scout YYF I
- ceph集群简单安装部署(Ubuntu14环境)
- activeMQ的三种通讯模式
- Nginx 之一:编译安装nginx 1.8.1 及配置
- 日文邮件变成乱码解决方案
- Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】
- Java从零开始学三(public class和class)
- Message和handler传递对象
- ezcad2激光打标软件_振镜篇:激光振镜工作原理
- Socket编程入门(一)实现简单的Socket实例
- 阻抗匹配及Smith圆图简介笔记
- Protocol(一)[概述]
- 如何给网站添加CNZZ站长统计功能代码的常用办法
- mysql informix_INFORMIX数据库函数
- 从零开始学Snaker(一)- 官方项目运行
- w7系统事件日志服务器,win7事件查看器里说事件日志服务不可用怎么回事
- com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exception
- 小米盒子4S Pro好不好,对比当贝盒子B1有什么缺点