Benne: Feldfunktionen verschachteln

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

  1. 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

    1. 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

      1. 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

        1. 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

  2. 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.

    1. 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ß).