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技能 - 窗口函数相关推荐

  1. 总结SQL Server窗口函数的简单使用

    前言:我一直十分喜欢使用SQL Server2005/2008的窗口函数,排名函数ROW_NUMBER()尤甚.今天晚上我在查看SQL Server开发的相关文档,整理收藏夹发现了两篇收藏已久的好文, ...

  2. 建议收藏!数据分析和机器学习必备SQL技能

    SQL自诞生以来,已经经历了48年历史,随着数据的急速增长,SQL越来越被关注,特别是它在数据查询,数据处理方面的优秀能力. 身处互联网行业,SQL 可能是你需要掌握的核心技能之一. 最早的时候,SQ ...

  3. c++ 编写函数返回两个值最小值_结合实例来分析SQL的窗口函数

    这篇主要是用举栗子的方式来理解SQL中的窗口函数,加深大家对SQL窗口函数的理解. 样例表 这个样例表是我为了好理解,随便设计的,不符合数据库设计的三范式,请忽略. (一)标准聚合函数 标准的聚合函数 ...

  4. sql累计求和时间太长_(七)SQL知识点--窗口函数

    目录 1.窗口函数 1.1定义 窗口函数,即OLAP函数(Online Anallytical Prcessing,联机分析处理),可以对数据库数据进行实时分析处理.具备分组.排序,同时又不减少原表行 ...

  5. SQL ——利用窗口函数的T-SQL解决方案

    目录 1.数字辅助表 2.日期和时间值序列 3.序列键--更新列中的值为唯一值 4.分页 5.删除重复 6.数据透视 7.每组前N行 8.模式 9.统计总和 10.最大并发间隔 11.包装间隔 12. ...

  6. 【SQL】窗口函数:求数据的整体百分比、整体累计值,组内累计值和组内累计百分比...

    〇.概述 1.所需资料 窗口函数实现组内百分比.累计值.累计百分比:https://blog.csdn.net/weixin_39751959/article/details/88828922 2.背 ...

  7. dataframe 模仿sql实现窗口函数功能 lead lag dataframe groupy 实现窗口函数

    df:DataFrame,每个工单的操作日志表.列:工单号, 操作时间,操作行为代码 我想找出有哪些工单进行了操作1之后紧接着就是进行操作5 如果是在sql中,直接用lead窗口函数就行. 但是在da ...

  8. sql之窗口函数(一)

    更新了 一.窗口函数 1. 概述 MySQL8.0版本之后,加入了窗口函数功能,简化了数据分析工作中查询语句的书写. 窗口函数是数据分析工作中必须掌握的工具,在SQL笔试中也是高频考点 窗口函数是类似 ...

  9. SQL中窗口函数中的FOLLOWING关键字

    背景 学习MySQL数据库 参考书 -微信读书软件中的<SQL基础教程>第二版 书中第八章第一节 问题 首先是使用PRECEDING关键字,由于MySQL8已经支持了窗口函数,SQL语句没 ...

最新文章

  1. uestc 250 数位dp(水)
  2. 手动实现SPring中的AOP(1)
  3. 04 canvas——位移画布和旋转缩放
  4. SQL语言基础:SQL语言概念知识笔记
  5. 数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区
  6. SpringBoot自定义Starter(自动配置类)
  7. react-native中的动画
  8. 一段程序结束等待进行下一段程序_c++实战篇(十二),debug调试程序
  9. python自动化办公excel-自动化办公:python操作Excel
  10. Django 创建超级用户
  11. DDraw笔记-创建表面
  12. iPhone 13用什么蓝牙耳机?五款性能强悍蓝牙耳机推荐
  13. Android应用开发
  14. windows10 64位 JDK1.8 下载
  15. 使用拟合方法实现光敏电阻传感器数值与光照强度的近似转换
  16. SAXReader解析器
  17. GNU Operating System
  18. 阳春三月,正是樱花绽放时,借此机会给午饭献上鲜艳艳的视觉盛宴!
  19. Java项目:调查问卷管理系统(java+SpringBoot+Vue+ElementUI+Maven+mysql)
  20. 云服务器 ghost系统,在Ubuntu 18.04操作系统上安装Ghost CMS的步骤

热门文章

  1. 第3关:字符串的连接
  2. 直接java调用tflite_Tensorflow Lite介绍
  3. 乐视S40 Air、S50 Air动手玩:定义下一代“低端电视机”标准
  4. 【数据结构Note5】-哈夫曼树
  5. 【愚公系列】2021年11月 攻防世界-简单题-MISC-008(掀桌子)
  6. 100kW光伏并网发电系统MATLAB仿真模型。 采用“增量电导+积分调节器”技术的MPPT控制器
  7. 光伏储能并网发电模型,根据储能电池SOC的工作区间,光伏有MPPT、恒功率输出两种控制方式,在电池健康工况下光伏处于MPPT模式
  8. 最新全自动磁环电感线圈绕法跟磁环绕线后产品工艺流程介绍
  9. 计算机仿真技术相关论文,计算机仿真技术论文.doc
  10. 屏幕文字识别工具软件