sql >> Databáze >  >> RDS >> Mysql

Jak zjistím rozdíl mezi jednotlivými maximálními hodnotami různých dnů?

Aktualizace 1:Zde jsou housle, http://sqlfiddle.com/#!2/818ad /2 , který jsem použil k testování.
Aktualizace 2:Zde jsou housle, http://sqlfiddle.com/#!2/3f78d/10 které jsem použil pro další doladění/opravu, na základě Sandyho komentářů.
Aktualizace 3:Z nějakého důvodu nebyl případ, kdy neexistuje žádný předchozí den, řešen správně. Myslel jsem, že ano. Aktualizoval jsem však, abych se ujistil, že to funguje (trochu těžkopádné – ale zdá se, že je to správné. Poslední housle:http://sqlfiddle.com/#!2/3f78d/45

Myslím, že @Grijesh vám koncepčně sehnal to hlavní, co jste potřebovali, prostřednictvím vlastního spojení vstupních dat (takže nezapomeňte hlasovat pro jeho odpověď!). Trochu jsem vyčistil jeho dotaz v syntaxi (na základě jeho dotazu!):

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

Poznámka 1:Myslím, že @Grijesh a já jsme současně řešili problémy se syntaxí dotazů. Je povzbudivé, že jsme skončili s velmi podobnými verzemi poté, co jsme oba dělali čištění. Moje verze se liší v použití IFNULL() když neexistují žádná předchozí data. Také jsem skončil s DATE_SUB a ujistil jsem se, že jsem pomocí DATE() zredukoval různá data na pouhá data bez časové složky

Poznámka 2:Původně jsem úplně nerozuměl vašim zdrojovým tabulkám, takže jsem si myslel, že musím do dotazu implementovat průběžný počet. Ale po lepší kontrole je jasné, že vaše zdrojová data již mají průběžný počet, takže jsem to vzal zpět.



  1. Odeslat výsledek MySQL pomocí AJAX přes jQuery

  2. Rozdíl mezi InnoDB a MyISAM?

  3. PHP Jak vrátit datetime(6) z Mysql?

  4. dotaz na horizontální rozložení dat mysql