我有一个表,其中包含一些具有以下格式的日期时间的数据(我正在使用Dremio)。对于表中的所有列,我尝试仅选择给定日期的最后一个条目,例如对于日期 2023-07-18,时间为 10:30:23.537 的行。
日期和时间 | 参数 |
---|---|
2023-07-31 09:37:43.143 | 1 |
2023-07-18 10:30:23.537 | 2 |
2023-07-18 10:29:55.148 | 3 |
2023-07-10 09:43:32.187 | 4 |
2023-07-10 09:43:05.171 | 5 |
2023-07-10 09:42:36.498 | 6 |
我已经尝试了SQL:选择给定日期时间的每一天的最后一条记录中提出的解决方案。
我从上面的示例中删除了 DATE 参数,因为它给出了错误。
SELECT t1.* FROM t1
INNER JOIN
(
SELECT Date_and_time AS Date_time, MAX(Date_and_time) AS Date_time_end
FROM t1
GROUP BY Date_and_time
) t2
ON t2.Date_time = t1.Date_and_time AND
t2.Date_time_end = t1.Date_and_time
ORDER BY
t1.Date_and_time;
不幸的是,这并没有给出结果,因为所有行都包含在结果表中。
这应该可以解决问题
SELECT t2.castdate,
t1.parameter
FROM table1 t1
JOIN
(SELECT CAST(Date_and_time AS DATE) AS 'castdate',
max(Date_and_time) AS 'Date_and_time'
FROM table1
GROUP BY castdate) t2 ON t1.Date_and_time = t2.Date_and_time
查询结果在
演员日期 | 参数 |
---|---|
2023-07-31 | 1 |
2023-07-18 | 2 |
2023-07-10 | 4 |
这可能对你有帮助:
select * from table where date(Date_and_time)='2023-07-18' order by Date_and_time desc limit 1