Bedingte Summenbildung in MySQL
bearbeitet von Rolf BHallo Matthias,
es kommt darauf an, welches Ergebnis Du willst.
Dies:
~~~
Farbe Anzahl
Rot 7
Grün 6
Blau 2
~~~
Oder dies:
~~~
Rot Grün Blau
7 6 2
~~~
Ersteres ist ein GROUP BY
~~~sql
SELECT Papierfarbe, SUM(Druckseiten)
FROM table
GROUP BY Papierfarbe
~~~
Zweiteres ein PIVOT, der sich in MYSQL nur mit Workaround lösen lässt.
~~~sql
SELECT SUM(Case Papierfarbe WHEN 'Rot' THEN Druckseiten ELSE 0 END CASE) as Rot,
SUM(Case Papierfarbe WHEN 'Grün' THEN Druckseiten ELSE 0 END CASE) as Gruen,
SUM(Case Papierfarbe WHEN 'Blau' THEN Druckseiten ELSE 0 END CASE) as Blau
FROM table
~~~
_Rolf_
--
sumpsi - posui - clusi
Bedingte Summenbildung in MySQL
bearbeitet von Rolf BHallo Matthias,
es kommt darauf an, welches Ergebnis Du willst.
Dies:
~~~
Farbe Anzahl
Rot 7
Grün 6
Blau 2
~~~
Oder dies:
~~~
Rot Grün Blau
7 6 2
~~~
Ersteres ist ein GROUP BY
~~~sql
SELECT Papierfarbe, COUNT(*)
FROM table
GROUP BY Papierfarbe
~~~
Zweiteres ein PIVOT, der sich in MYSQL nur mit Workaround lösen lässt. Gemäß Stackoverflow verwendet MYSQL für boolesche Werte im SUM die Zahlen 0 und 1, deswegen braucht man kein mühsames CASE. Ich probiere es gleich mal aus.
~~~sql
SELECT SUM(Papierfarbe = 'Rot') as Rot,
SUM(Papierfarbe = 'Grün') as Grün,
SUM(Papierfarbe = 'Blau') as Blau
FROM table
~~~
_Rolf_
--
sumpsi - posui - clusi