in gruppierten Daten bestimmte Attribute zählen
xyz
- datenbank
Hallo,
habe folgende Ausgangstabelle:
N NN L M l
1 x1 a 2 0
1 x2 b 2 0
2 x3 a 1 0
3 x4 a 3 0
3 x5 b 3 0
3 x6 b 3 0
die von mir benötigte Abfrage soll folgendes Ergebnis bringen:
N NN L M l
1 x1 a 2 1
2 x3 a 1 0
3 x4 a 3 2
Bisher hab ich nur:
SELECT N, FIRST(NN), FIRST(L), FIRST(M), FIRST(l)
FROM Ausgangstabelle
GROUP BY N
Das wichtige daran ist die Zusammenfassung in der Spalte l, hier soll gezählt werden, wie oft b (Spalte L) je N auftritt (Beispiel wieviele Angestellte b sind in der Firma N, wobei in M auch der/ die Inhaber, GF etc. mit enthalten sind).
Ich hab da eine Blockade im Kopf, kann mir jemand einen Tip geben?
Gruß Tom
Hi!
Du nutzt mySQL wies scheint. In den meisten anderen SQL Dialekten würde das, was Du da machst (korrekterweise) gar nicht funktionieren. Felder, die man nicht auch gruppiert muss man wenigstens in eine Aggregatfunktion stecken. Und genau die machen, was Du willst. Aggregatfunktionen sind u.a. count(), max(), min(), ...
Gruss,
Steel
Hi!
Du nutzt mySQL wies scheint. In den meisten anderen SQL Dialekten würde das, was Du da machst (korrekterweise) gar nicht funktionieren. Felder, die man nicht auch gruppiert muss man wenigstens in eine Aggregatfunktion stecken. Und genau die machen, was Du willst. Aggregatfunktionen sind u.a. count(), max(), min(), ...
Gruss,
Steel
Also first ist eine Aggregatfunkgkion, nämlich der Wert des ersten satzes.
Allein mit count komm ich nicht weiter. Es sollen nur die Sätze gezählt werden, wo ein b steht, a soll nicht mitgezählt werden. Der Wert in der letzten Spalte ist damit immer kleiner als die Anzahl der aggregierten Sätze.
Gruß tom
Wenn Du a nicht in der Ergebnismenge haben willst, schliesse a aus und selektier nur b oder alles ohne a. Dafür gibts Where-Bedingungen.