Auswahl der GRUPPE, deren MITGLIEDER alle im Alter unter X

Als Beispiel, ich versuche, wählen Sie eine Gruppe, in der alle Ihre Mitglieder sind im Alter unter einem bestimmten Alter.

Wenn ich eine Tabelle wie diese:

name | group | age
andy | 1     | 15
lisa | 1     | 16
matt | 2     | 24
...  | 3     | 15
...  | 3     | 26

Die Auswahl der Gruppe mit Mitgliedern im Alter von 17 oder unter zurückkehren würde, Gruppe 1.

Ich habe versucht mit GROUP BY... HAVING... - Klauseln, aber das gibt der Gruppe 1 und 3, da die Gruppe 3 hat ein Mitglied im Alter von 15 Jahren.

1 Antworten

  • Nick
    4. Mai 2019

    Im Grunde müssen Sie die Anzahl der Mitglieder der jeweiligen Gruppe, und auch die Anzahl der Mitglieder, die im Alter von 17 oder unter. Für eine Gruppe, wo alle Mitglieder sind unter 17 Jahren, diese zahlen werden die gleichen sein. In MySQL können Sie letzteres tun mit SUM(age <= 17), die seit MySQL behandelt Boolesche Werte als 1 und 0 in einem numerischen Kontext:

    SELECT `group`
    FROM groups
    GROUP BY `group`
    HAVING COUNT(*) = SUM(age <= 17)
    

    Ausgabe

    group
    1
    

    Demo auf dbfiddle