gpt4 book ai didi

mysql - 如何获得不同日期的各个最大值之间的差异?

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

我是 MySQL 的新手,我正在尝试查找:

The difference between a given day's maximum value occurred and the previous day's maximum value.

我能够通过以下方式获得日期的最大值:

select max(`bundle_count`), `Production_date` 
from `table`
group by `Production_date`

但我不知道如何使用 SQL 来计算两个给定日期的最大值之间的差异。

Please find the input available

我期待这样的输出 Expecting Output

请帮帮我。

最佳答案

更新 1:这是一个 fiddle ,http://sqlfiddle.com/#!2/818ad/2 ,我用于测试。
更新 2:这是一个 fiddle ,http://sqlfiddle.com/#!2/3f78d/10根据 Sandy 的评论,我将其用于进一步完善/修复。
更新 3:由于某种原因,没有正确处理没有前一天的情况。我以为是。但是,我已经更新以确保它有效(有点麻烦——但它似乎是正确的。最后一个 fiddle :http://sqlfiddle.com/#!2/3f78d/45


我认为@Grijesh 在概念上通过输入数据的自连接为您提供了您需要的主要内容(因此请确保您对他的回答投了赞成票!)。我已经在语法上清理了他的查询(基于他的查询!):

SELECT
DATE(t1.`Production_date`) as theDate,
MAX( t1.`bundle_count` ) AS 'max(bundle_count)',
MAX( t1.`bundle_count` ) -
IF(
EXISTS
(
SELECT date(t2.production_date)
FROM input_example t2
WHERE t2.machine_no = 1 AND
date_sub(date(t1.production_date), interval 1 day) = date(t2.production_date)
),
(
SELECT MAX(t3.bundle_count)
FROM input_example t3
WHERE t3.machine_no = 1 AND
date_sub(date(t1.production_date), interval 1 day) = date(t3.production_date)
GROUP BY DATE(t3.production_date)
), 0
)
AS Total_Bundles_Used
FROM `input_example` t1
WHERE t1.machine_no = 1
GROUP BY DATE( t1.`production_date` )

注意 1:我认为 @Grijesh 和我同时清理了查询语法问题。令人鼓舞的是,在我们都进行清理之后,我们最终得到了非常相似的版本。当没有前面的数据时,我的版本不同之处在于使用 IFNULL()。我还得到了一个 DATE_SUB,并且我确保通过 DATE()

将各种日期减少为没有时间分量的单纯日期

注2:我本来对你的源表没有完全了解,所以我想我需要在查询中实现一个运行计数。但是经过更好的检查,很明显您的源数据已经有了一个运行计数,所以我把那些东西拿掉了。

关于mysql - 如何获得不同日期的各个最大值之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14252146/

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