gpt4 book ai didi

mysql - 在 MySQL 中按 DATE 分组 DATETIME 并显示当天的最后一条记录

转载 作者:行者123 更新时间:2023-11-29 06:40:34 25 4
gpt4 key购买 nike

我有一组货币报价,大约每小时变化一次。对于这个特定示例中的 sql 结果,我只需要 yyyy-mm-dd 格式的过去 30 天的每一天的最后一条可用记录。

这是我当前的查询:

SELECT value, DATE(date_quotation) as date_q
FROM quotation
GROUP BY DATE(date_quotation)
ORDER BY date_q DESC LIMIT 30

这用于直方图,其中 x 轴显示分隔的日期。报价表有以下列:

  • id_quotation (INT)
  • date_quotation(日期时间)
  • 值(十进制)

问题是它不一定带来当天的最后一条记录。它按天对记录进行分组,但它应该显示具有最高小时/分钟/秒的记录。有任何想法吗?谢谢!

最佳答案

您可以利用 MySQL GROUP BY 扩展的非标准行为并执行

SELECT DATE(date_quotation) date_q, value
FROM
(
SELECT value, date_quotation
FROM quotation
WHERE date_quotation >= CURDATE() - INTERVAL 30 DAY
AND date_quotation < CURDATE() + INTERVAL 1 DAY
ORDER BY date_quotation DESC
) q
GROUP BY DATE(date_quotation)

或者您可以通过选择每天 date_quotation 的最大值(假设没有重复)然后加入回 quotation 来选择上

SELECT date_q, value
FROM
(
SELECT DATE(date_quotation) date_q, MAX(date_quotation) date_quotation
FROM quotation
WHERE date_quotation >= CURDATE() - INTERVAL 30 DAY
AND date_quotation < CURDATE() + INTERVAL 1 DAY
GROUP BY DATE(date_quotation)
) t JOIN quotation q
ON t.date_quotation = q.date_quotation

注意: 这两个查询都使用索引友好的方式来过滤日期期间。确保您在 date_quotation 列上有一个索引。

这是 SQLFiddle 演示

关于mysql - 在 MySQL 中按 DATE 分组 DATETIME 并显示当天的最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21807829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com