首页 > 解决方案 > SQL:选择给定日期时间的每一天的最后一条记录

问题描述

我有一个stock数据表(数据库是 MySQL):

trade_time          price  
2013-01-02 09:43:00 515.61
2013-01-03 09:39:00 525.90
2013-01-03 11:38:00 539.44
2013-01-03 13:22:00 509.16
2013-01-04 09:47:00 507.40
2013-01-04 14:33:00 517.45
2013-01-07 09:33:00 550.42
2013-01-07 13:13:00 524.85
2013-01-07 14:51:00 536.44

我想返回每天的最后成交价

trade_date price  
2013-01-02 515.61
2013-01-03 509.16
2013-01-04 517.45
2013-01-07 536.44

这个问题与本网站上其他“根据日期时间选择最新记录”问题的不同之处在于,输入是 indatetime但输出是 in date。让我知道这个问题已经得到解答。

标签: mysqlsql

解决方案


您可以加入一个子查询,该查询可以找到每个日期的最大日期时间。

SELECT t1.trade_time, t1.price
FROM yourTable t1
INNER JOIN
(
    SELECT DATE(trade_time) AS trade_date, MAX(trade_time) AS max_trade_time
    FROM yourTable
    GROUP BY DATE(trade_time)
) t2
    ON t2.trade_date = DATE(t1.trade_time) AND
       t2.max_trade_time = t1.trade_time
ORDER BY
    t1.trade_time;

下面演示的屏幕截图

演示


推荐阅读