La selección de GRUPO, cuyos MIEMBROS son todos los menores de X

Como un ejemplo, estoy tratando de seleccionar un grupo en el que todos sus miembros son menores de una cierta edad.

Si yo tuviera una tabla como esta:

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

Seleccionando el grupo con todos los miembros de 17 años de edad o bajo volvería grupo 1.

He intentado usar GROUP BY... TENER... cláusulas, sino que devuelve grupo 1 y el grupo 3, ya que el grupo 3 tiene un miembro de 15 años de edad.

1 Respuestas

  • Nick
    4 de mayo de 2019

    Básicamente, usted necesita para contar a los miembros de cada grupo, además de contar el número de miembros que de 17 años o menos. Para un grupo donde todos los miembros son menores de 17 años, estos cargos será el mismo. En MySQL se puede hacer esto último con SUM(age <= 17) desde MySQL trata booleanos como 1 o 0 en un contexto numérico:

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

    Salida

    group
    1
    

    Demo en dbfiddle