gpt4 book ai didi

mysql - 在 mysql 中按小时分组,但也包括小时 + 1 中的第一个值

转载 作者:可可西里 更新时间:2023-11-01 08:05:44 27 4
gpt4 key购买 nike

假设您有这样的数据:

  time  value
10:00 5
10:15 12
10:30 15
10:45 27
11:00 29

像这样的查询:

SELECT MAX(value) - MIN(value), HOUR(time) FROM mytable GROUP BY HOUR(time);

您将获得:

  value  time
22 10

但是,我需要它包含 11:00 的值,因此结果是 24 (29-5),而不是 22。有没有办法在 SQL 中执行此操作,或者我别无选择,只能在代码级别手动执行此操作(因此,没有分组,只需获取数据并手动减去)。

最佳答案

根据您的数据的一致性,您可以通过自连接来实现这一点,如下所示:

SELECT HOUR(a.`time`) AS grouper,
GREATEST(MAX(a.value),IFNULL(MIN(b.value),0)) - MIN(a.value) AS diff
FROM mytable a
LEFT JOIN mytable b ON IF(HOUR(a.time) <= 23, HOUR(a.time)+1, 0) = HOUR(b.time)
GROUP BY grouper

同一张表上的 LEFT JOIN 允许您获取下一个小时的值以进行比较。

http://sqlfiddle.com/#!9/fe72a/16

关于mysql - 在 mysql 中按小时分组,但也包括小时 + 1 中的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26465346/

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