Condiciones de suma en select

Buenos días,
Tengo una bbdd para un juego, en la que tengo, entre otras, 3 tablas con la siguiente información:
Personaje(SEUDÓNIMO, Nombre_apellidos, sexo, edad...)
Pertenece(SEUDÓNIMO, NOMBRE_ARMA)
Arma(NOMBRE, munición..)
Donde Pertenece es una tabla intermedia con las claves primarias de Personaje y Arma.
Esta vez me piden la siguiente consulta:
Mostrar la siguiente información del personaje con más munición: nombre y apellidos, seudónimo, altura, ancho proporcional, ancho en centímetros y cantidad de munición.
Toda esta información está en las tablas indicadas arriba.
He probado la condición having junto con sum(max) pero obviamente no obtenemos resultados correctos.
Esperamos vuestra ayuda,
Muchas gracias!

1 Respuesta

Respuesta
1
Primero tienes que ver la cantidad de municiones por cada personaje (sub consulta), si en este resultado no pones el seudónimo, puedes hacerle un máximo a la sumas con lo que tendremos la cantidad de municiones máximas del (o los) personajes que tienen más.
Luego buscamos el o los personajes cuya suma de municiones sea igual a la máxima, el dato va agrupado por personaje para poder sumar.
select p.SEUDÓNIMO, p.Nombre_apellidos, <otros campos>, sum(A.munición)
from Personaje P, Arma A, Pertenece X
where X.nombre_arma = A.nombre
  and P.seudonimo = X.seudonimo
having sum(A.municion) = (select max(sum(municion))
                          from Pertenece P1, Arma A1
                          where P1.nombre_arma = A1.nombre
                          group by P1.seudonimo)
group by p.SEUDÓNIMO, p.Nombre_apellidos, <otros campos>;
Cualquier cosa me avisas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas