当前位置: 首页 > 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.dtcms.com/a/296397.html

相关文章:

  • 数据库垂直拆分和水平拆分
  • 面经 - 车载多媒体系统
  • 【已解决】YOLO11模型转wts时报错:PytorchStreamReader failed reading zip archive
  • PyTorch数据选取与索引详解:从入门到高效实践
  • es 和 lucene 的区别
  • 【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据
  • R study notes[1]
  • linux入门 相关linux系统操作命令(二)--文件管理系统 ubuntu22.04
  • 二分查找-153-寻找旋转排序数组中的最小值-力扣(LeetCode)
  • unordered_map和unordered_set特性以及解决哈希冲突
  • Gemini拿下IMO2025金牌的提示词解析
  • Redis Lua脚本语法详解
  • Redis ①⑦-分布式锁
  • 跨模态理解的基石:非文本内容向量化方法全景解析
  • Lua协同程序(coroutine)
  • leetcode100.相同的树(递归练习题)
  • Xilinx-FPGA-PCIe-XDMA 驱动内核兼容性问题修复方案
  • 基于单片机睡眠质量/睡眠枕头设计
  • 1.1.2 建筑构造要求
  • 无人机正摄影像自动识别与矢量提取系统
  • 用phpEnv安装Thinkphp8.x出错调试全过程记录
  • C++ 中打开文件的多种方式及相关流类
  • matplotlib的详细知识点
  • k8s之ingress定义https访问方式
  • 【AI News | 20250723】每日AI进展
  • Windows11 本地安装docker Desktop 部署dify 拉取镜像报错
  • iOS Core Data 本地数据库 使用详解:从模型关系到数据操作
  • 技嘉z370主板开启vtx
  • 谈谈ArrayList与Vector的理解?
  • SpringBoot+AI+Web3实战指南