sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag få skillnaden mellan de individuella maxvärdena för olika dagar?

Uppdatering 1:Här är en fiol, http://sqlfiddle.com/#!2/818ad /2 , som jag använde för att testa.
Uppdatering 2:Här är en fiol, http://sqlfiddle.com/#!2/3f78d/10 som jag använde för att ytterligare förfina/fixa, baserat på Sandys kommentarer.
Uppdatering 3:Av någon anledning hanterades inte fallet där det inte finns någon föregående dag korrekt. Jag trodde det var. Jag har dock uppdaterat för att se till att det fungerar (lite krångligt--men det verkar vara rätt. Sista fiol:http://sqlfiddle.com/#!2/3f78d/45

Jag tror att @Grijesh konceptuellt fick dig det viktigaste du behövde via självanslutningen av indata (så se till att du röstar fram hans svar!). Jag har rensat upp hans fråga lite om syntax (utifrån hans fråga!):

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` )      

Note 1:Jag tror att @Grijesh och jag rensade upp frågesyntaxproblemen samtidigt. Det är uppmuntrande att vi fick väldigt liknande versioner efter att vi båda städade. Min version skiljer sig genom att använda IFNULL() för när det inte finns några föregående data. Jag fick också en DATE_SUB , och jag såg till att reducera olika datum till bara datum utan tidskomponent, via DATE()

Note 2:Jag hade ursprungligen inte helt förstått dina källtabeller, så jag trodde att jag behövde implementera en löpande räkning i frågan. Men efter bättre inspektion är det tydligt att dina källdata redan har en löpande räkning, så jag tog ut det igen.



  1. Drivrutinen JDBC PostgreSQL med Android

  2. Hur man hanterar en tabellkolumn med ett reserverat SQL-sökord?

  3. Fråga jämföra datum i SQL

  4. IntentService fryser mitt applikationsgränssnitt