gpt4 book ai didi

MySQL 选择带有日期和 ID 的最大总数

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

我有一个 cron 脚本,每天将事件用户总数写入表中。我现在正在尝试生成一个简单的报告,该报告将显示每个月的“高水位线”。由于某些帐户会在当月到期,因此最高数量可能不会出现在月底。

这是我的表结构的示例

tblUserLog
-----------
record_id INT(11) // PRIMARY KEY
run_date DATE // DATE RUN
ttl_count INT(11) // TOTAL FOR DAY

示例数据:

record_id      run_date      ttl_count
1 2013-06-01 500
2 2013-06-10 510
3 2013-06-20 520
4 2013-06-30 515
5 2013-07-01 525
6 2013-07-10 530
7 2013-07-20 540
8 2013-07-31 550
9 2013-08-01 560

我想要返回的是:

record_id   run_date        ttl_count
3 2013-06-20 520
8 2013-07-31 550
9 2013-08-01 560

我尝试了两个接近的查询...

// This will give me the total for the first of the month
SELECT s.record_id, s.run_date, s.ttl_count
FROM tblStatsIndividual s
JOIN (
SELECT record_id
FROM tblStatsIndividual
GROUP BY DATE_FORMAT(run_date, '%Y %m')
HAVING MAX(ttl_count)
) s2
ON s2.record_id = s.record_id
ORDER BY run_date DESC

这将返回每个月第一天的总计,以及总计的 record_id 和正确日期。

尝试过这个...

SELECT record_id,max(run_date), max(ttl)
FROM (
SELECT record_id,run_date, max(ttl_count) AS ttl
FROM tblStatsIndividual
GROUP BY DATE_FORMAT(run_date, '%Y %m')
) a
GROUP BY DATE_FORMAT(run_date, '%Y %m')
ORDER BY run_date DESC

这个似乎获得了正确的“高水位线”,但它没有返回高水位线行的 record_id 或 run_date 。

如何获取最高总数的 record_id 和 run_date?

最佳答案

类似的东西

Select detail.Record_ID, detail.Run_Date, detail.ttl_Count
From tblStatsIndividual detail
Inner Join
(Select Year(run_date) as Year, Month(Run_date) as Month, Max(ttl_count) as ttl
From tblStatsIndividual
Group By Year(run_date), Month(Run_date)) maximums
On maximums.Year = Year(detail.Run_date) and maximums.Month = Month(detail.Run_date)
and maximums.ttl = detail.ttl_count

应该这样做。注意,根据您的要求,如果您在同一个月内有两条具有相同(且该月最高)ttl_count 的记录,则它们都会被返回。

关于MySQL 选择带有日期和 ID 的最大总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153792/

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