我有一个数据表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
Run Code Online (Sandbox Code Playgroud)
我想返回每天的最后交易价格
trade_date price
2013-01-02 515.61
2013-01-03 509.16
2013-01-04 517.45
2013-01-07 536.44
Run Code Online (Sandbox Code Playgroud)
该问题与本网站上其他“根据日期时间选择最新记录”问题的不同之处在于,输入为 in,datetime但输出为date。让我知道这个问题已经得到解答。
您可以加入一个子查询,该子查询查找每个日期的最大日期时间。
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;
Run Code Online (Sandbox Code Playgroud)
您可以使用相关子查询:
select t.*
from t
where t.trade_date = (select max(t2.trade_date)
from t t2
where date(t2.trade_date) = date(t.trade_date)
);
Run Code Online (Sandbox Code Playgroud)