Großte Gruppe(n) finden



  • Hallo,

    Ich habe eine Tabelle "Einwohner" mit den Attributen "Name" und "Wohnort"

    Nun ist es so, das es personen gibt, die mehere Wohnorte haben (Zweitwohnung etc.
    Wie kann ich ausgeben welche Person (Also den Namen) die Meisten Wohnorte haben?

    Ich habe so begonnen

    SELECT DISTINCT Name
    FROM Wohnort
    GROUP BY Wohnort
    HAVING COUNT (Wohnort) ????????

    // Jetzt bräuchte ich sowas wie Maximum//

    Hat Jemand ne Idee?



  • Korrektur natürlich muß es so heißen:

    SELECT DISTINCT Name
    FROM Einwohner
    GROUP BY Wohnort
    HAVING COUNT (Wohnort) ????????

    // Jetzt bräuchte ich sowas wie Maximum//

    Hat Jemand ne Idee?



  • Wenn du das alles in einer Tabelle hast, dann isses nicht so gut, weil du damit eine grundlegende Regel verletzt hast.
    Ich weiß etz leider nimmer welche das was - aber so ist dein Datenmodell nicht normiert.

    Ok, gehen wir mal davon aus, du hast diese Tabellen einwohner, wohnort und einwohner_wohnort, da eine N:M-Beziehung zwischen Einwohner und Wohnort gilt.Es können ja mehrere Leute im gleichen Wohnort wohnen.

    einwohner
      id
      name
    
    wohnort
      id
    
    einwohner_wohnort
      einwohner_id
      wohnort_id
    
    select name, count(einwohner_id) from einwohner inner join einwohner_wohnort
    on einwohner_id = id
    group by name
    limit 1
    

    so ähnlich.. Ist jetzt nur aus dem Kopf und ungetestet.



  • SELECT DISTINCT Name, Wohnort
    FROM Einwohner
    GROUP BY Wohnort
    ORDER BY COUNT (Wohnort) DESC

    Dann ist das oberste Tuuppel in deiner Ausgabetabelle die gesuchte Lösung


Anmelden zum Antworten