gpt4 book ai didi

MySQL:选择每个月的最后一组记录

转载 作者:行者123 更新时间:2023-11-29 22:18:26 26 4
gpt4 key购买 nike

每个月都会有几次将一系列新记录添加到表 certificant_region_stats 中,并具有相同的时间戳 certificants_modified。我正在尝试选择每月最后一次 Volley 的所有记录。

我的尝试使我的控制台崩溃:

SELECT * 
FROM certificant_region_stats
WHERE certificants_modified
IN (
SELECT MAX(certificants_modified)
FROM certificant_region_stats
GROUP BY YEAR(certificants_modified), MONTH(certificants_modified)
)
ORDER BY certificants_modified DESC;

子查询本身工作得很好,所以我猜我使用 IN 是错误的?

编辑:示例数据

| id | country | certificants_number | certificants_modified | 
==============================================================
| 1 | USA | 2 | 2015-06-22 10:24:55 |
| 2 | Canada | 4 | 2015-06-22 10:24:55 |
| 3 | USA | 5 | 2015-06-09 09:18:24 |
| 4 | Canada | 6 | 2015-06-09 09:18:24 |
| 5 | USA | 8 | 2015-05-15 11:30:00 |
| 6 | Canada | 8 | 2015-05-15 11:30:00 |
| 7 | USA | 3 | 2015-05-02 08:45:01 |
| 8 | Canada | 7 | 2015-05-02 08:45:01 |

我希望它从第 1、2、5 和 6 行返回 *。

最佳答案

这是一个解决方案。它使用表达式获取每个月的第一天,然后提取该月的最后一批数据。

SELECT DATE(DATE_FORMAT(crs.certificants_modified, '%Y-%m-01')) month_begin,
crs.id, crs.country, crs.certificants_modified
FROM certificant_region_stats crs
JOIN (
SELECT MAX(certificants_modified) lastmod,
DATE(DATE_FORMAT(certificants_modified, '%Y-%m-01')) month_begin
FROM certificant_region_stats
GROUP BY DATE(DATE_FORMAT(certificants_modified, '%Y-%m-01'))
) last ON crs.certificants_modified = last.lastmod
ORDER BY month_begin, crs.id

看这个。 http://sqlfiddle.com/#!9/3b386/3/0

关于MySQL:选择每个月的最后一组记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986300/

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