gpt4 book ai didi

MySQL 查询基于每月几天的平移数据汇总数据

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

我们有一个如下所示的目录,

Timestamp           |    Total_Value
2015-06-05 07:14:23 ------------568
2015-06-06 15:14:23 ------------768
2015-06-07 15:14:23 ------------868
2015-06-08 19:47:30 ------------968
2015-06-30 19:47:30 ------------1668
2015-07-01 06:47:30 ------------268

类次从当天早上 7 点开始到第二天早上 7 点。一共三类倒。所以每天的数据计算需要第二天早上7点之前的数据。

SELECT DAY(TIMESTAMP) AS DAY, MAX(Total_Value) AS `Total`
FROM Table_NAME
WHERE MONTH(TIMESTAMP) = MONTH(NOW())
GROUP BY DAY(TIMESTAMP)
ORDER BY DAY

以上查询正确提供了 2015-06-01 00:00:00 到 2015-06-30 23:59:59 之间时间戳的单日数据

但是我需要2015-06-01 07:00:00到2015-07-01 06:59:59之间一个月的数据,格式为

Day --------Total_Value
1 ------------0
2 ------------0
3 -------------0
4 -------------0
5 ------------568
6 ------------768
7 ------------868
8 ------------968

.
.
.
.
30 ------------1768

2) 还需要 MySQL 查询将一天分为 3 个轮类,其中轮类时间为上午 7 点至下午 3:30、下午 3:30 至晚上 11:00 以及下午 11 点至上午 7:00(第二天),并分组为一个周。

请帮助解决此问题。提前致谢。

最佳答案

从时间戳中减去 7 小时,将其调整为轮类的正确日期。

SELECT DAY(DATE_SUB(timestamp, INTERVAL 7 HOUR)) AS Day, MAX(total_value) AS Total
FROM Table_Name
WHERE MONTH(DATE_SUB(timestamp, INTERVAL 7 HOUR)) = MONTH(NOW())
GROUP BY Day
ORDER BY Day

要将其分解为类次,请使用 CASE 表达式来确定类次

SELECT DAY(DATE_SUB(timestamp, INTERVAL 7 HOUR)) AS Day, 
CASE WHEN DATE_FORMAT(timestamp, '%H:%i') < '07:00' THEN 3
WHEN DATE_FORMAT(timestamp, '%H:%i') < '15:30' THEN 1
WHEN DATE_FORMAT(timestamp, '%H:%i') < '23:00' THEN 2
ELSE 3
END AS Shift,
MAX(total_value) AS Total
FROM Table_Name
WHERE MONTH(DATE_SUB(timestamp, INTERVAL 7 HOUR)) = MONTH(NOW())
GROUP BY Day, Shift
ORDER BY Day, Shift

关于MySQL 查询基于每月几天的平移数据汇总数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37715290/

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