sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kan jeg få forskellen mellem de individuelle maksimumværdier for forskellige dage?

Opdatering 1:Her er en violin, http://sqlfiddle.com/#!2/818ad /2 , som jeg brugte til at teste.
Opdatering 2:Her er en violin, http://sqlfiddle.com/#!2/3f78d/10 som jeg brugte til yderligere forfining/fiksering, baseret på Sandys kommentarer.
Opdatering 3:Af en eller anden grund blev sagen, hvor der ikke er nogen foregående dag, ikke behandlet korrekt. Jeg troede det var. Jeg har dog opdateret for at sikre, at det virker (lidt besværligt - men det ser ud til at være rigtigt. Sidste violin:http://sqlfiddle.com/#!2/3f78d/45

Jeg tror, ​​at @Grijesh konceptuelt fik dig det vigtigste, du havde brug for via selv-sammenføjningen af ​​inputdataene (så sørg for at stemme op hans svar!). Jeg har ryddet lidt op i hans forespørgsel om syntaks (ud fra hans forespørgsel!):

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:Jeg tror, ​​@Grijesh og jeg ryddede op i forespørgselssyntaksproblemerne på samme tid. Det er opmuntrende, at vi endte med meget lignende versioner, efter at vi begge var i gang med oprydning. Min version adskiller sig ved at bruge IFNULL() når der ikke er nogen forudgående data. Jeg endte også med en DATE_SUB , og jeg sørgede for at reducere forskellige datoer til blot datoer uden tidskomponent via DATE()

Note 2:Jeg havde oprindeligt ikke helt forstået dine kildetabeller, så jeg tænkte, at jeg skulle implementere en løbende optælling i forespørgslen. Men efter bedre inspektion er det klart, at dine kildedata allerede har en løbende optælling, så jeg tog de ting ud igen.



  1. Når autovakuum ikke støvsuger

  2. Hvordan tester man i og mellem hver af flere borde?

  3. Hvordan tilføjer jeg en stemme til min database i en formular?

  4. Data for lange til kolonne i Django på MySQL