You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Dremio筛选数据表中每日最后一条Datetime记录的SQL问题

解决Dremio中筛选每日最后一条记录的问题

问题分析

你之前的SQL失败原因很明确:子查询里按完整的Date_and_time字段分组,这会让每条时间戳单独成为一个分组,MAX(Date_and_time)结果就是该条记录自身,关联后自然会返回所有行,完全达不到按天筛选的目的。

方案一:关联子查询法

利用Dremio的DATE_TRUNC('day', 字段名)函数提取日期部分,先按日期分组计算每天的最晚时间,再关联原表匹配对应记录:

SELECT t1.*
FROM t1
INNER JOIN (
    -- 按天分组,计算每天的最大时间戳
    SELECT 
        DATE_TRUNC('day', Date_and_time) AS day_date,
        MAX(Date_and_time) AS last_time
    FROM t1
    GROUP BY day_date
) t2 
    ON DATE_TRUNC('day', t1.Date_and_time) = t2.day_date
    AND t1.Date_and_time = t2.last_time
ORDER BY t1.Date_and_time;

方案二:窗口函数法(更简洁)

用ROW_NUMBER()窗口函数,按日期分区、时间戳降序排序,直接取每组的第一条记录:

SELECT Date_and_time, Parameter
FROM (
    SELECT 
        *,
        ROW_NUMBER() OVER (
            PARTITION BY DATE_TRUNC('day', Date_and_time) 
            ORDER BY Date_and_time DESC
        ) AS rn
    FROM t1
) t
WHERE rn = 1
ORDER BY Date_and_time;

关键说明

Dremio中不能直接用DATE(Date_and_time)提取日期(这是你之前报错的原因),需要用DATE_TRUNC('day', Date_and_time)来截断datetime到日期维度,该函数会返回yyyy-MM-dd 00:00:00.000格式的datetime值,用于分组是完全可行的。

内容的提问来源于stack exchange,提问作者Laura Ostrowska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:48:24