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

san*_*ker 2 mysql sql

我是MySQL新手,我试图找到:

给定日期的最大值与前一天的最大值之间的差异.

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

select max(`bundle_count`), `Production_date` 
from `table` 
group by `Production_date` 
Run Code Online (Sandbox Code Playgroud)

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

请找到可用的输入

我期待这样的输出 期待输出

请帮我.

DWr*_*ght 5

更新1:这是我用来测试的小提琴http://sqlfiddle.com/#!2/818ad/2.
更新2:这是一个小提琴,http://sqlfiddle.com/#!2/3f78d/10,我根据桑迪的评论用于进一步提炼/修复.
更新3:由于某种原因,前一天没有正确处理的情况.我以为是的.但是,我已经更新,以确保工作(有点麻烦 - 但它似乎是正确的.最后小提琴: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` )      
Run Code Online (Sandbox Code Playgroud)

注1:我认为@Grijesh和我同时正在清理查询语法问题.令人鼓舞的是,在我们进行清理之后,我们最终得到了非常相似的版本.IFNULL()当没有先前的数据时,我的版本在使用时有所不同.我也最终得到了一个DATE_SUB,并且我确保将各种日期减少到没有时间组件的日期,通过DATE()

注2:我原本还没有完全理解你的源表,所以我认为我需要在查询中实现一个运行计数.但是经过更好的检查,很明显你的源数据已经有了运行数,所以我把这些东西拿回来了.