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

MySQL 查找连续相同名称的记录组,并保留每组内时间最大的一条记录

要求:查找连续相同名称的记录组,并保留每组内时间最大的一条记录,同时计算每组记录的 num 总和。

今天有人问了我一个问题,大致就是下面这样的数据结构(原谅我实在不知道怎么描述这个问题)

在这里插入图片描述

然后需要得到下面这样的结果

在这里插入图片描述

直接上SQL,因为这个也不是我能写出来的,是我跟 GPT 磕了半个小时才得到的,这里只是做个记录防止下次要用又不知道怎么描述,所以大家要是需要直接用但是不要问我具体实现逻辑

WITH GroupedProcesses AS (SELECT id, name, create_time, num,-- 如果相邻两条记录的 name 不同,则标记新组CASE WHEN name = LAG(name) OVER (ORDER BY id) THEN 0 ELSE 1 END AS isNewGroupFROM table_ceshi
),
NumberedGroups AS (SELECT id, name, create_time, num,-- 根据 isNewGroup 的累加值生成组编号SUM(isNewGroup) OVER (ORDER BY id) AS groupNumFROM GroupedProcesses
),
MaxTimePerGroup AS (-- 找出每组内 create_time 最大的记录SELECT groupNum, name, MAX(create_time) AS max_timeFROM NumberedGroupsGROUP BY groupNum, name
)
SELECT g.id,g.name, m.max_time AS create_time, SUM(g.num) AS totalNum -- 按组计算 num 的和
FROM NumberedGroups g
JOIN MaxTimePerGroup m ON g.groupNum = m.groupNum AND g.name = m.name
GROUP BY g.groupNum, g.name, m.max_time
ORDER BY m.max_time;
http://www.lryc.cn/news/463904.html

相关文章:

  • three.js 使用geojson ,实现中国地图区域,边缘流动效果
  • 数据中台业务架构图
  • Docker学习笔记(2)- Docker的安装
  • PostgreSql的备份和升级
  • 联系拯救者Y9000P2022笔记本电脑进入BIOS快捷键
  • compose navigation 自定义navtype
  • 实现对redis过期键监听案例
  • yocto基础 -- bb 文件字段解析
  • Android开发相关的重要网站
  • MySQL 中utfmb3和utfmb4字符集区别
  • 【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)
  • 今日总结10.18
  • React Agent 自定义实现
  • RabbitMQ 入门(六)SpringAMQP五种消息类型(Direct Exchange)
  • 2062:【例1.3】电影票
  • Python | Leetcode Python题解之第477题汉明距离总和
  • Leecode刷题之路第25天之K个一组翻转链表
  • nuxtjs3 使用tailwindcss做自适应
  • 数据资产目录构建方法与应用
  • 【Python爬虫实战】从文件到数据库:全面掌握Python爬虫数据存储技巧
  • 断其一指,无惧!ProFusion3D: 相机或者激光失效仍高效的多传感器融合3D目标检测算法
  • CCS字体、字号更改+CCS下载官方链接
  • YOLO11改进|注意力机制篇|引入SEAM注意力机制
  • 简历修订与求职经历 - Chap04
  • 鸿蒙开发案例:推箱子
  • mysql--表的约束
  • Ubuntu 上安装 docker 并配置 Docker Compose 详细步骤
  • MySQL去除空白字符(如非标准空格、制表符等)
  • 2063:【例1.4】牛吃牧草
  • QT开发:深入掌握 QtGui 和 QtWidgets 布局管理:QVBoxLayout、QHBoxLayout 和 QGridLayout 的高级应用