MySQL Lists are EOL. Please join:

List:German« Previous MessageNext Message »
From:Frank Rasche Date:January 15 2019 9:13pm
Subject:Re: GROUP BY + COUNT
View as plain text  
Hi,

also wenn die Tabelle wirklich so aussieht, dann

SELECT SUM(a1) as "Mercedes", SUM(a2) as "BMW", SUM(a3) as "Ford" FROM 
`autos`

Allerdings, vom Tabellenlayout her, egal was du machst, du wirst MySQL 
immer zu einem Table-Scan zwingen. Bzgl deiner Performance Frage:
Wenn dein Union schon eine Sekunde braucht, dann wird es mit anderen 
Varianten in diesem Fall vermutlich auch nicht wesentlich schneller.

Selbst wenn man a1, a2 und a3 mit Indices versieht, bei dieser 
Kardinalität bleibt das immer ein Table-Scan und MySQL muss dann so oder 
so alle Spalten in *allen* Zeilen anschauen.


Am 15.01.2019 um 17:15 schrieb BG:
> Nochmals zur Verdeutlichung ..
> 
> Tabelle: autos
> 
> id | a1	| a2 | a3
> ------------------------------------------
> 1 | 1 | 0 | 0
> 2 | 0 | 1 | 0
> 3 | 1 | 1 | 1
> 4 | 1 | 1 | 0
> 
> Ergebnis soll sein:
> 
> Mercedes 3
> BMW 3
> Ford 1
> 
> ---
> 
> Es soll anstatt dieser UNION Query nur noch eine Abfrage erfolgen ..
>   
> SELECT 'Mercedes' AS marke, COUNT(autos.id) FROM autos WHERE a1=1 UNION
> SELECT 'BMW' AS marke, COUNT(autos.id) FROM autos WHERE a2=1 UNION
> SELECT 'Ford' AS marke, COUNT(autos.id) FROM autos WHERE a3=1
> 
> Grüße
> Bert
> 
> 

Thread
GROUP BY + COUNTBG15 Jan 2019
  • AW: GROUP BY + COUNTBG15 Jan 2019
    • AW: GROUP BY + COUNTBG15 Jan 2019
      • Re: GROUP BY + COUNTMartin Wildgruber15 Jan 2019
        • AW: GROUP BY + COUNTBG15 Jan 2019
    • Re: GROUP BY + COUNTFrank Rasche15 Jan 2019