2016-07-15 10 views
0

Ich habe Beobachtungstisch WieWie durch Boolen Wert in mysql Gruppe

id  ignition mileage`** 

    1 true   10 
    2 true   30 
    3 true   10 
    4 false   05 
    5 false   05 
    6 true   10 
    7 true   10 
    8 false   20 
    9 false   20 
    10 false   20 

Ich mag würde durch die Gruppierung Zündung true und false wie

ignition total_mileage 
true  50 
false  10 
true  20 
false  60 

Wie value.something Summe der Kilometerleistung berechnen Ich bekomme Ausgabe mit Gruppierung

+1

Datentyp von 'ignition' =' varchar'? Definieren Sie Ihre erwartete Ausgabe neu. – 1000111

+0

ja Datentyp ist varchar –

+0

meine erwartete Ausgabe sind wie oben definiert (siehe: Gesamtkilometerstand) –

Antwort

1

Ein Purist könnte ein paar Fehler in diesem Ansatz, aber ich versuche es kurz halten ...

Z. B .:

DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table 
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY 
,ignition TINYINT NOT NULL 
,mileage INT NOT NULL 
); 

INSERT INTO my_table VALUES 
(1,true,10), 
(2,true ,30), 
(3,true ,10), 
(4,false,05), 
(5,false,05), 
(6,true ,10), 
(7,true ,10), 
(8,false,20), 
(9,false,20), 
(10,false,20); 

SELECT ignition 
    , SUM(mileage) total 
    FROM 
    (SELECT x.* 
      , CASE WHEN ignition = @prev THEN @i:[email protected] ELSE @i:[email protected]+1 END i 
      , @prev:=ignition FROM my_table x 
      ,(SELECT @prev:=null,@i:=0) vars 
     ORDER 
      BY id 
    ) n 
GROUP 
    BY i; 
+----------+-------+ 
| ignition | total | 
+----------+-------+ 
|  1 | 50 | 
|  0 | 10 | 
|  1 | 20 | 
|  0 | 60 | 
+----------+-------+