gpt4 book ai didi

mysql - 如何在MySQL中获取特定日期每3小时的聚合结果?

转载 作者:行者123 更新时间:2023-11-29 10:05:54 25 4
gpt4 key购买 nike

我有下表,我正在尝试每 3 小时获取产品总数,并且如果在特定时间段内不存在产品,我想显示 0 而不是显示仅存在的记录。

enter image description here

我比较接近,能够获取每小时的记录,但不能获取 3 小时内的记录。请查找我使用过的以下查询。

CREATE TABLE `integers` (
`i` int(11) NOT NULL,
PRIMARY KEY (`i`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `integers`(`i`) values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),(21),(22),(23);

SELECT hr + INTERVAL 1 HOUR AS `date`, COUNT(products.product_id) AS product_count
FROM (
SELECT
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(CURRENT_TIMESTAMP)/3600)*3600+1800) - INTERVAL i HOUR AS hr
FROM integers
WHERE i BETWEEN 0 AND HOUR(NOW())) AS times
LEFT OUTER JOIN product AS products
ON products.`updated_on` >= hr
AND products.`updated_on` < hr + INTERVAL 1 HOUR
AND products.`updated_on` > DATE(NOW())
GROUP
BY hr
ORDER
BY hr

通过上述查询,我​​可以获得每 1 小时的聚合结果,输出如下

enter image description here

但我想做到每 3 小时一次。我在某个地方遗漏了一些东西,但无法弄清楚。

最佳答案

尝试这样的操作(使用取模运算符):

SELECT hr.i as hr_from,
hr.i + 3 as hr_to,
COUNT(p.product_id) AS product_count
FROM integers hr
LEFT OUTER JOIN product AS p
ON p.updated_on >= DATE(NOW())
AND HOUR(p.updated_on) BETWEEN hr.i and hr.i + 2
WHERE hr.i MOD 3 = 0
GROUP BY hr.i
ORDER BY hr.i

关于mysql - 如何在MySQL中获取特定日期每3小时的聚合结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917951/

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