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

SQL 案例1 按秒分组取每天最新记录

要按时间分组并精确到秒,同时过滤出每天最新的1条记录,可以使用SQL中的ROW_NUMBER()窗口函数来实现。假设你的表名为your_table,时间字段为timestamp,以下是一个示例查询:

WITH ranked_records AS (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY DATE(timestamp) ORDER BY timestamp DESC) AS rn
    FROM
        your_table
)
SELECT
    *
FROM
    ranked_records
WHERE
    rn = 1;

解释:

  1. ROW_NUMBER(): 这是一个窗口函数,它为每一行分配一个唯一的序号。我们使用PARTITION BY DATE(timestamp)来按天分组,然后使用ORDER BY timestamp DESC按时间降序排列,确保最新的记录排在前面。

  2. WITH ranked_records AS (...): 这是一个CTE(Common Table Expression),用于创建一个临时的结果集ranked_records,其中包含了每一行在当天的排名。

  3. SELECT * FROM ranked_records WHERE rn = 1: 最后,我们从ranked_records中选择排名为1的记录,即每天最新的1条记录。

注意:

  • DATE(timestamp)函数用于提取日期部分,确保按天分组。

  • 如果你的数据库不支持DATE()函数,可以使用相应的日期提取函数(如CAST(timestamp AS DATE))。


示例:

假设你的表your_table有以下数据:

idtimestampvalue
12023-10-01 12:34:56100
22023-10-01 13:00:00200
32023-10-02 09:00:00300
42023-10-02 10:00:00400

执行上述查询后,结果将是:

idtimestampvaluern
22023-10-01 13:00:002001
42023-10-02 10:00:004001

这样你就得到了每天最新的1条记录。


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

相关文章:

  • VSTO(C#)Excel开发进阶1:设计功能区Ribbon 对话框加载器 多个功能区 多个组
  • Python 用户账户(创建用户账户)
  • 23种设计模式-创建型模式-工厂方法
  • Linux 基础入门操作 第十二章 TINY Web 服务器
  • 金融行业 UE/UI 设计:解锁高效体验,重塑行业界面
  • BEVFormer报错(预测场景与真值场景的sample_token不匹配)
  • 洛谷题目: P1225 黑白棋游戏 题解 (本题难)
  • leetcode二叉树3
  • React项目中,递归写法获取tree的id集合
  • 2025年移动端开发性能优化实践与趋势分析
  • 知识库外挂 vs 大脑全开:RAG与纯生成式模型(如GPT)的终极Battle
  • 前端面试整理
  • 常考计算机操作系统面试习题(二)(下)
  • 自由学习记录(47)
  • Pythonload JSON文件需要手动关闭吗?
  • SQL HAVING 1 的用法解析
  • SpringBoot在线教育系统设计与实现
  • 算法及数据结构系列 - 树
  • 创建vue2项目
  • Python应用指南:利用高德地图API获取POI数据(关键词版)