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

mysql取出组内按照某时间最新一条数据的其他字段

注,仅适用于MYSQL8以上,不然无法使用窗口函数

示例数据如下:

lot_idfile_namefile_timetype
1362911113629111_20231101_165326.csv2023-11-01 16:53:181
1362911113629111_20231110_095855.csv2023-11-10 09:58:312
1362911113629111_20231110_084255.csv2023-11-10 08:41:562
1362911113629111_20231110_093731.csv2023-11-10 08:41:562
12341234_20231102_134030.csv2023-11-02 13:40:211
12341234_20231102_171750.csv2023-11-02 17:17:311
12341234_20231106_122026.csv2023-11-06 12:18:362

若想取出数据,按lot_id和type分组,依据file_time最新的那条数据,获取到file_name. 即取出如下数据

lot_idfile_namefile_timetype
12341234_20231102_171750.csv2023-11-02 17:17:001
12341234_20231106_122026.csv2023-11-06 12:18:002
1362911113629111_20231101_165326.csv2023-11-01 16:53:001
1362911113629111_20231110_095855.csv2023-11-10 09:58:002

可使用如下sql完成

-- 首先按照需求排序记得行号
select lot_id,file_name,file_time,`type`,
ROW_NUMBER() over(PARTITION BY lot_id,`type` order by file_time desc) as `rank` FROM test;

-- 完整sql,取出行号为1的数据,即最新的数据
select * from 
(
select lot_id,file_name,file_time,`type`,
ROW_NUMBER() over(PARTITION BY lot_id,`type` order by file_time desc) as `rank` FROM test
)a where a.`rank` = 1

其中

  • PARTITION BY lot_id,type. 语法类似与group by,指定分组要求.
  • order by file_time desc即指定组内按什么排序.
  • ROW_NUMBER()为窗口函数,记为组内的行号
    注意:窗口函数不会改变原有的数据行数,可以认为是查看分析数据的一种方式,即在原数据上加上一列

上半句片段执行结果如下,rank表示按照需求的排序情况

lot_idfile_namefile_timetyperank
1362911113629111_20231101_165326.csv2023-11-01 16:53:1811
1362911113629111_20231110_095855.csv2023-11-10 09:58:3121
1362911113629111_20231110_084255.csv2023-11-10 08:41:5622
1362911113629111_20231110_093731.csv2023-11-10 08:41:5623
12341234_20231102_134030.csv2023-11-02 13:40:2112
12341234_20231102_171750.csv2023-11-02 17:17:3111
12341234_20231106_122026.csv2023-11-06 12:18:3621

http://www.kler.cn/a/132017.html

相关文章:

  • element ui修改select选择框背景色和边框色
  • 基础课8——中文分词
  • 虹科示波器 | 汽车免拆检修 | 2015款奔驰G63AMG车发动机偶尔自动熄火
  • Hive Lateral View explode列为空时导致数据异常丢失
  • pandas字符串操作:大小写转换、连接、分割、包含等
  • 基于ChatGPT的文本生成艺术框架—WordArt Designer
  • C++实现有理数类 四则运算和输入输出
  • Nacos 配置中心底层原理(1.X版本)
  • 浅谈霍尔电流传感器在UPS蓄电池浮充电流远程监测方案的应用-安科瑞 蒋静
  • Linux使用Docker完整安装Superset3,同时解决please use superset_config.py to override it报错
  • C#写入Datetime到SQL server
  • 沐神深度学习报错 can only concatenate str (not “int“) to str
  • 企业spark案例 —— 出租车轨迹分析(Python)
  • Java通过Lettuce访问Redis主从,哨兵,集群
  • MATLAB 模型预测控制(MPC)控制入门 —— 设计并仿真 MPC 控制器
  • 应用软件提取出来,打包成.EXE文件在别的电脑上能不能安装?
  • Python爬虫动态IP代理防止被封的方法
  • CSS滚动捕获 scroll-snap-align
  • 【蓝桥杯选拔赛真题23】C++计算24 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析
  • Leetcode刷题详解——不同路径