Doofi
Benutzer
- Beiträge
- 9
Hallo Forum, ich steh auf dem Schlauch!
Folgende SQL-Abfrage habe ich:
SELECT NAME, MAX(WERT) AS MAXSCORE, SUM(WERT) AS SUMME, COUNT(WERT) AS ANZ,
SUM(CASE WHEN r1 = 0 THEN 1 ELSE 0 END +
CASE WHEN r2 = 0 THEN 1 ELSE 0 END +
CASE WHEN r3 = 0 THEN 1 ELSE 0 END +
CASE WHEN r4 = 0 THEN 1 ELSE 0 END +
CASE WHEN r5 = 0 THEN 1 ELSE 0 END +
CASE WHEN r6 = 0 THEN 1 ELSE 0 END +
CASE WHEN r7 = 0 THEN 1 ELSE 0 END +
CASE WHEN r8 = 0 THEN 1 ELSE 0 END +
CASE WHEN r9 = 0 THEN 1 ELSE 0 END +
CASE WHEN r10 = 0 THEN 1 ELSE 0 END +
CASE WHEN r11 = 0 THEN 1 ELSE 0 END +
CASE WHEN r12 = 0 THEN 1 ELSE 0 END +
CASE WHEN r13 = 0 THEN 1 ELSE 0 END +
CASE WHEN r14 = 0 THEN 1 ELSE 0 END +
CASE WHEN r15 = 0 THEN 1 ELSE 0 END +
CASE WHEN r16 = 0 THEN 1 ELSE 0 END +
CASE WHEN r17 = 0 THEN 1 ELSE 0 END +
CASE WHEN r18 = 0 THEN 1 ELSE 0 END +
CASE WHEN r19 = 0 THEN 1 ELSE 0 END +
CASE WHEN r20 = 0 THEN 1 ELSE 0 END
) AS AnzNull FROM challenge WHERE UEBUNG='Route 64' GROUP BY NAME ORDER BY MAXSCORE DESC;
Die Daten werden derzeit über die Spalte MAXSCORE sortiert. Da hier die Werte aber häufig gleich sind, benötige ich ein 2. Kriterium. Das soll aus den Spalten R1 bis R20 kommen. Dort möchte ich die vorhanden Felder mit 0 als Wert zählen ,das funktioniert auch. Ich brauche das Ergebnis davon (Also den Inhalt von AnzNull) als weitere Sortieroption. Um den zu verwenden, muss AnzNull noch durch die den Wert aus ANZ geteilt werden und das Ergebnis daraus kann ich als weitere Sortieroption nutzen.
Ich hoffe man kann verstehen, was gemeint ist. Ich bräuchte jetzt also ein AnzNull / ANZ = NullErgebnis, das würde dann am Ende des Select mit sortiert, also quasi
ORDER BY MAXSCORE, NullErgebnis DESC;
Geht sowas in einem Statement oder muss ich das über PHP regeln?
Folgende SQL-Abfrage habe ich:
SELECT NAME, MAX(WERT) AS MAXSCORE, SUM(WERT) AS SUMME, COUNT(WERT) AS ANZ,
SUM(CASE WHEN r1 = 0 THEN 1 ELSE 0 END +
CASE WHEN r2 = 0 THEN 1 ELSE 0 END +
CASE WHEN r3 = 0 THEN 1 ELSE 0 END +
CASE WHEN r4 = 0 THEN 1 ELSE 0 END +
CASE WHEN r5 = 0 THEN 1 ELSE 0 END +
CASE WHEN r6 = 0 THEN 1 ELSE 0 END +
CASE WHEN r7 = 0 THEN 1 ELSE 0 END +
CASE WHEN r8 = 0 THEN 1 ELSE 0 END +
CASE WHEN r9 = 0 THEN 1 ELSE 0 END +
CASE WHEN r10 = 0 THEN 1 ELSE 0 END +
CASE WHEN r11 = 0 THEN 1 ELSE 0 END +
CASE WHEN r12 = 0 THEN 1 ELSE 0 END +
CASE WHEN r13 = 0 THEN 1 ELSE 0 END +
CASE WHEN r14 = 0 THEN 1 ELSE 0 END +
CASE WHEN r15 = 0 THEN 1 ELSE 0 END +
CASE WHEN r16 = 0 THEN 1 ELSE 0 END +
CASE WHEN r17 = 0 THEN 1 ELSE 0 END +
CASE WHEN r18 = 0 THEN 1 ELSE 0 END +
CASE WHEN r19 = 0 THEN 1 ELSE 0 END +
CASE WHEN r20 = 0 THEN 1 ELSE 0 END
) AS AnzNull FROM challenge WHERE UEBUNG='Route 64' GROUP BY NAME ORDER BY MAXSCORE DESC;
Die Daten werden derzeit über die Spalte MAXSCORE sortiert. Da hier die Werte aber häufig gleich sind, benötige ich ein 2. Kriterium. Das soll aus den Spalten R1 bis R20 kommen. Dort möchte ich die vorhanden Felder mit 0 als Wert zählen ,das funktioniert auch. Ich brauche das Ergebnis davon (Also den Inhalt von AnzNull) als weitere Sortieroption. Um den zu verwenden, muss AnzNull noch durch die den Wert aus ANZ geteilt werden und das Ergebnis daraus kann ich als weitere Sortieroption nutzen.
Ich hoffe man kann verstehen, was gemeint ist. Ich bräuchte jetzt also ein AnzNull / ANZ = NullErgebnis, das würde dann am Ende des Select mit sortiert, also quasi
ORDER BY MAXSCORE, NullErgebnis DESC;
Geht sowas in einem Statement oder muss ich das über PHP regeln?



