SQL技能 - 窗口函数
SQL技能 - 窗口函数
- 1. 排序函数
- 1.1. 不分组排序
- 1.2. 分组排序
- 1.3. 利用非等值自连接实现排序
- 2. 聚合函数实现滑动窗口计算
- 2.1. 常用聚合函数
- 2.2. 滑动行范围的常用表达
- 2.3. 示例
- 3. lag、lead函数求增长率(同比、环比)
- 4. 求中位数
窗口函数表达式:
function(arg) OVER ([PARTITION BY expression][ORDER BY expression [ASC|DESC]][frame])
1. 排序函数
排序函数 | 示例 | 备注 |
---|---|---|
row_number() | 1,2,3… | 序号不重复,序号连续 |
rank() | 1,2,2,4… | 序号可以重复,序号不连续 |
dense_rank() | 1,2,2,3… | 序号可以重复,序号连续 |
1.1. 不分组排序
select
score,
dense_rank() over(order by score desc) as `rank`
from scores
1.2. 分组排序
select c.department,c.employee,c.salary
from
(select
b.name as department,
a.name as employee,
a.salary,
rank() over(partition by departmentid order by salary desc) as salary_rank
from employee a
inner join department b on a.departmentid = b.departmentid) c where c.salary_rank = 1
1.3. 利用非等值自连接实现排序
2. 聚合函数实现滑动窗口计算
2.1. 常用聚合函数
聚合函数 | 说明 |
---|---|
COUNT(col) | 返回所有非空值的个数 |
AVG(col) | 返回平均值 |
SUM(col) | 返回总和 |
MAX(col) | 返回最大值 |
MIN(col) | 返回最小值 |
FIRST(col) | 返回第一个记录的值 |
LAST(col) | 返回最后一个记录的值 |
2.2. 滑动行范围的常用表达
{RANGE|ROWS} frame_start
{RANGE|ROWS} between frame_start AND frame_end
rows模式:按物理行来进行划分
range模式:按数值逻辑来进行划分
frame_start / frame_end的五种表达 | 说明 |
---|---|
UNBOUNDED PRECEDING | 从开始行 |
expression PRECEDING | 往前推n行(只适用于rows模式) |
CURRENT ROW | 当前行 |
expression FOLLOWING | 往后推n行(只适用于rows模式) |
UNBOUNDED FOLLOWING | 到结束行 |
默认:BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
2.3. 示例
求累计总加
3. lag、lead函数求增长率(同比、环比)
同比就是比去年同期,环比就是这个月比上个月,单位不一定是月,可以是任何时间单位。
同比计算方式:同比增长率 = (本期数 - 同期数) ÷ 同期数 * 100%
环比计算方式:环比增长速度 = (本期数 - 上期数) ÷ 上期数 * 100%
前后函数 | 说明 |
---|---|
lead(expression,n) | 返回当前行的后n行 |
lag(expression,n) | 返回当前行的前n行 |
求环比:
4. 求中位数
以上学习数据来自于B站【数据泥石流up】
SQL技能 - 窗口函数相关推荐
- 总结SQL Server窗口函数的简单使用
前言:我一直十分喜欢使用SQL Server2005/2008的窗口函数,排名函数ROW_NUMBER()尤甚.今天晚上我在查看SQL Server开发的相关文档,整理收藏夹发现了两篇收藏已久的好文, ...
- 建议收藏!数据分析和机器学习必备SQL技能
SQL自诞生以来,已经经历了48年历史,随着数据的急速增长,SQL越来越被关注,特别是它在数据查询,数据处理方面的优秀能力. 身处互联网行业,SQL 可能是你需要掌握的核心技能之一. 最早的时候,SQ ...
- c++ 编写函数返回两个值最小值_结合实例来分析SQL的窗口函数
这篇主要是用举栗子的方式来理解SQL中的窗口函数,加深大家对SQL窗口函数的理解. 样例表 这个样例表是我为了好理解,随便设计的,不符合数据库设计的三范式,请忽略. (一)标准聚合函数 标准的聚合函数 ...
- sql累计求和时间太长_(七)SQL知识点--窗口函数
目录 1.窗口函数 1.1定义 窗口函数,即OLAP函数(Online Anallytical Prcessing,联机分析处理),可以对数据库数据进行实时分析处理.具备分组.排序,同时又不减少原表行 ...
- SQL ——利用窗口函数的T-SQL解决方案
目录 1.数字辅助表 2.日期和时间值序列 3.序列键--更新列中的值为唯一值 4.分页 5.删除重复 6.数据透视 7.每组前N行 8.模式 9.统计总和 10.最大并发间隔 11.包装间隔 12. ...
- 【SQL】窗口函数:求数据的整体百分比、整体累计值,组内累计值和组内累计百分比...
〇.概述 1.所需资料 窗口函数实现组内百分比.累计值.累计百分比:https://blog.csdn.net/weixin_39751959/article/details/88828922 2.背 ...
- dataframe 模仿sql实现窗口函数功能 lead lag dataframe groupy 实现窗口函数
df:DataFrame,每个工单的操作日志表.列:工单号, 操作时间,操作行为代码 我想找出有哪些工单进行了操作1之后紧接着就是进行操作5 如果是在sql中,直接用lead窗口函数就行. 但是在da ...
- sql之窗口函数(一)
更新了 一.窗口函数 1. 概述 MySQL8.0版本之后,加入了窗口函数功能,简化了数据分析工作中查询语句的书写. 窗口函数是数据分析工作中必须掌握的工具,在SQL笔试中也是高频考点 窗口函数是类似 ...
- SQL中窗口函数中的FOLLOWING关键字
背景 学习MySQL数据库 参考书 -微信读书软件中的<SQL基础教程>第二版 书中第八章第一节 问题 首先是使用PRECEDING关键字,由于MySQL8已经支持了窗口函数,SQL语句没 ...
最新文章
- uestc 250 数位dp(水)
- 手动实现SPring中的AOP(1)
- 04 canvas——位移画布和旋转缩放
- SQL语言基础:SQL语言概念知识笔记
- 数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区
- SpringBoot自定义Starter(自动配置类)
- react-native中的动画
- 一段程序结束等待进行下一段程序_c++实战篇(十二),debug调试程序
- python自动化办公excel-自动化办公:python操作Excel
- Django 创建超级用户
- DDraw笔记-创建表面
- iPhone 13用什么蓝牙耳机?五款性能强悍蓝牙耳机推荐
- Android应用开发
- windows10 64位 JDK1.8 下载
- 使用拟合方法实现光敏电阻传感器数值与光照强度的近似转换
- SAXReader解析器
- GNU Operating System
- 阳春三月,正是樱花绽放时,借此机会给午饭献上鲜艳艳的视觉盛宴!
- Java项目:调查问卷管理系统(java+SpringBoot+Vue+ElementUI+Maven+mysql)
- 云服务器 ghost系统,在Ubuntu 18.04操作系统上安装Ghost CMS的步骤
热门文章
- 第3关:字符串的连接
- 直接java调用tflite_Tensorflow Lite介绍
- 乐视S40 Air、S50 Air动手玩:定义下一代“低端电视机”标准
- 【数据结构Note5】-哈夫曼树
- 【愚公系列】2021年11月 攻防世界-简单题-MISC-008(掀桌子)
- 100kW光伏并网发电系统MATLAB仿真模型。 采用“增量电导+积分调节器”技术的MPPT控制器
- 光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT、恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式
- 最新全自动磁环电感线圈绕法跟磁环绕线后产品工艺流程介绍
- 计算机仿真技术相关论文,计算机仿真技术论文.doc
- 屏幕文字识别工具软件