Duda consulta SQL

Hola amigo,
Llevo tiempo queriendo hacer esta consulta y estoy un poco desesperada. Soy nueva con el lenguaje SQL.
Tengo las siguientes tablas relacionadas:
BARRIO (barrio, ciudad_fk, geometría)
MANZANA (id, barrio)
VIVIENDA (id_vivienda, personas, tipo_vivienda, metros, antigüedad, id_manzana_fk)
PERSONA (DNI_pk,id_vivienda_fk, lugar_trabajo)
Con estas tablas relacionadas entre sí, necesito sacar la siguiente consulta:
Barrio en el que más personas trabajan en Madrid.
Para ello, he hecho la siguiente select:
select max(manzana.barrio), count(*)
        from persona, vivienda, manzana, barrio
        where persona.id_vivienda_fk = vivienda.id_vivienda and
              vivienda.id_manzana_fk = manzana.id and
              manzana.barrio = barrio.barrio and
              persona.ciudad_trabajo = 'MADRID'
Pero me saca un barrio incorrecto, ya que no es el que más personas tienen trabajando en Madrid. Si añado group by por barrio, me saca el número correcto por cada barrio, pero esto no es lo que quiero, ya que quiero que saque EL BARRIO EN EL QUE MÁS PERSONAS TRABAJAN EN MADRID.
¿Qué estoy haciendo mal o que no estoy haciendo?
Gracias por vuestro tiempo!

1 respuesta

Respuesta
1
Si haces un "max(manzana.barrio)" esto te va a dar el barrio con el mayor identificador, que no es lo que quieres.
Yo creo que lo ideal sería sacar el count para cada barrio y de ahí sacar el mayor:
select b.barrio, b.numero
  From (select max(numero) numero
          From (select barrio, count(*) numero
                  From persona, vivienda, manzana, barrio
                 where persona.id_vivienda_fk = vivienda.id_vivienda
                   and vivienda.id_manzana_fk = manzana.id
                   and manzana.barrio = barrio.barrio
                   and persona.ciudad_trabajo = 'MADRID'
                 group by barrio)) a,
       (select barrio, count(*) numero
          from persona, vivienda, manzana, barrio
         where persona.id_vivienda_fk = vivienda.id_vivienda
           and vivienda.id_manzana_fk = manzana.id
           and manzana.barrio = barrio.barrio
           and persona.ciudad_trabajo = 'MADRID'
         group by barrio) b
 where a.numero = b.numero

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas