Feldfunktionen verschachteln
Benne
- datenbank
0 André Laugks0 Benne0 Frank Jonas0 Benne
0 Mulder0 Mulder
Hallo ForumleserInnen,
Meine Tabelle hat folgendes Schema
_____________________________
| Datum |ID | sonst. Felder |
... ...
Es wird nach ID gruppiert. Dann wird mit Count(ID) ausgegeben wieviel Zeilen von ID jeweils gruppiert wurden.
Nun möchte ich aber auch die Maximalzahl der Gruppierten IDs ausgeben. Ich dachte zunächst an Max(Count(ID)), was jedoch nicht geht. In einem Forum habe ich gelesen, dass Count bzw. Max jeweils Gruppierungsfunktionen sind, die man nicht verschachteln kann.
Kann ich diese Problem anderst lösen, ohne eine Schleife zu programmieren?
Danke und Gruß,
Benne
Hallo!
Es wird nach ID gruppiert. Dann wird mit Count(ID) ausgegeben wieviel Zeilen von ID jeweils gruppiert wurden.
Nun möchte ich aber auch die Maximalzahl der Gruppierten IDs ausgeben. Ich dachte zunächst an Max(Count(ID)), was jedoch nicht geht.
SELECT spalte, COUNT(spalte) AS anzahl FROM tabelle GROUP BY spalte;
MfG, André Laugks
Hallo!
Hallo André
Danke für Deine Hilfe.
SELECT spalte, COUNT(spalte) AS anzahl FROM tabelle GROUP BY spalte;
Dieser Befehl bewirkt aber praktisch das Gleiche.
Wenn ich nun noch Max(Anzahl) einfüge, kann er die Spalte nicht finden...
MfG, André Laugks
Gruß
Benne
Hallo,
ich fürchte, das geht wohl nicht. Als Workaround fällt mir nur ein, das Resultset absteigend nach der Anzahl zu sortieren und den ersten Wert zu lesen. Falls das eine andere Sortierung nicht durcheinanderbringt.
HTH
Gruß Frank
Hallo,
Hallo
ich fürchte, das geht wohl nicht. Als Workaround fällt mir nur ein, das Resultset absteigend nach der Anzahl zu sortieren und den ersten Wert zu lesen. Falls das eine andere Sortierung nicht durcheinanderbringt.
naja, das befürchtete ich auch. Trotzdem mal Danke an alle Beteiligten der Diskussion ;)
HTH
Gruß Frank
Gruß,
Benne
Meine Tabelle hat folgendes Schema
_____________________________
| Datum |ID | sonst. Felder |
... ...
Es wird nach ID gruppiert. Dann wird mit Count(ID) ausgegeben wieviel Zeilen von ID jeweils gruppiert wurden.
Nun möchte ich aber auch die Maximalzahl der Gruppierten IDs ausgeben. Ich dachte zunächst an Max(Count(ID)), was jedoch nicht geht. In einem Forum habe ich gelesen, dass Count bzw. Max jeweils Gruppierungsfunktionen sind, die man nicht verschachteln kann.
Versuch mal folgendes:
SELECT Max(tabelle2.anzahl) FROM
(SELECT id, Count(id) AS anzahl FROM tabelle
GROUP BY id) tabelle2
Wenn ich mich nicht irre, klappt das zumindest unter Oracle (mySQL nicht, da es keine Subselects unterstützt).
Unter DB2 müßtest Du sagen:
WITH tabelle2(id,anzahl) ... statt des FROM SELECT.
Achso, in mySQL versuch mal
SELECT id, Count(id) AS anzahl FROM tabelle LIMIT 0,1
GROUP BY id
ORDER BY Count(id)
oder so (kenn mich nicht so aus, wo das LIMIT hin muß).