当前位置: 首页 > news >正文

Mysql窗口函数

WITH RankedData AS ( # WITH RankedData AS (...):这是一个CTE,它创建了一个临时的结果集,名为RankedData。在这个CTE中,对fabalarm表执行了一个SELECT查询SELECT *,ROW_NUMBER() OVER (ORDER BY `time` DESC) AS rn,  # 按照时间降序 并给每条记录返回一个序号 该序号命名为rnCEIL(ROW_NUMBER() OVER (ORDER BY   `time` DESC) / 10.0) AS grp  # 再降序排列并分配序号 然后每个序号对10向上取整 得到的值作为组序号 命名为grpFROM fabalarm
), # 此时每条记录将增加两列,rn与grp,rn为按照time降序排列产生的序号,grp为按照time降序排列后每10个一组的组编号
FilteredData AS ( # 再次创建一个临时结果集SELECT *,ROW_NUMBER() OVER (PARTITION BY grp ORDER BY `time` DESC) AS rn_in_grp  FROM RankedData# 从临时结果集RankedData里查询,以grp分组,组内按照时间降序排序,得到相同的grp内的编号rn_in_grp
)
SELECT *
FROM FilteredDataWHERE rn_in_grp = 1;

第一个Select单独执行时得到的查询结果(RankedData )如下:

SELECT *,ROW_NUMBER() OVER (ORDER BY `time` DESC) AS rn, CEIL(ROW_NUMBER() OVER (ORDER BY   `time` DESC) / 10.0) AS grp  FROM fabalarm

在这里插入图片描述
第一个和第二个select查询结果(FilteredData )如下:

WITH RankedData AS (SELECT *,ROW_NUMBER() OVER (ORDER BY `time` DESC) AS rn, CEIL(ROW_NUMBER() OVER (ORDER BY   `time` DESC) / 10.0) AS grp  FROM fabalarm
),
FilteredData AS ( SELECT *,ROW_NUMBER() OVER (PARTITION BY grp ORDER BY `time` DESC) AS rn_in_grp  FROM RankedData
)
SELECT *
FROM FilteredData

在这里插入图片描述

SELECT *,
ROW_NUMBER() OVER (ORDER BY time DESC) AS rn,
CEIL(ROW_NUMBER() OVER (ORDER BY time DESC) / 10.0) AS grp
FROM fabalarm

ROW_NUMBER() OVER为窗口函数
用法为
ROW_NUMBER() OVER(PARTITION BY column 1 RDER BY column2)

表示按照column1来分组,即column1的值相同的行为一组,组内通过column2 来排序
例如表:
在这里插入图片描述
执行SELECT *, ROW_NUMBER() OVER (PARTITION BY sales.category ORDER BY sales.quantity ASC) FROM sales
查询结果
在这里插入图片描述
可以发现查询结果有ROW_NUMNER() OVER列,该列对同一组内根据quantity 升序分配了序号

http://www.lryc.cn/news/598925.html

相关文章:

  • 2025年海外短剧独立站开发:H5+PC端双平台技术实践与增长策略
  • 《AI流程编排中的Graph观测:设计原理与集成实践》
  • 高并发系统设计面试题
  • 深度分析Java多线程机制
  • MinIO 版本管理实践指南(附完整 Go 示例)
  • 【AI】Java生态对接大语言模型:主流框架深度解析
  • P1308 [NOIP 2011 普及组] 统计单词数
  • PH73211L_VC1/PH73211LQ_VC1:低功耗USB HiFi音频解码器固件技术解析
  • 力扣刷题HOT100——跳跃游戏
  • 康养休闲旅游服务虚拟仿真实训室:赋能人才培养的创新路径
  • 2025年7月23日 AI 今日头条
  • 2025最新MySQL面试题实战记录,互联网公司常问题目
  • day46day47 通道注意力
  • 高级04-Java 设计模式:常用模式详解与实战
  • 【STM32项目】智能台灯
  • 大模型Prompt优化工程
  • 将Scrapy项目容器化:Docker镜像构建的工程实践
  • 跨境支付入门~国际支付结算(稳定币)
  • 最大团--贪心例题
  • uboot FPGA调试环境搭建
  • leetcode98深度解析:验证有效的二叉搜索树
  • 基于深度学习的CT图像3D重建技术研究
  • Mac电脑开发Python(基于vs code)
  • 学习日志17 python
  • 复矩阵与共轭转置矩阵乘积及其平方根矩阵
  • 六种经典智能优化算法(PSO/GWO/WOA/HHO/DBO/SSA)无人机(UAV)三维路径规划,Matlab代码实现
  • java后端
  • C# 密封类_密封方法 (seadled 关键字)
  • 核心数据结构:DataFrame
  • 《Flutter篇第一章》基于GetX 和 Binding、Dio 实现的 Flutter UI 架构