SQL - Ayuda con consulta sql

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 19 puestos en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con consulta sql

Publicado por George (1 intervención) el 06/10/2019 10:44:49
sql


Obtener el nombre del jugador MVP (Most Valuable Player) de cada temporada y su valoración. El MVP de una temporada será el jugador que tenga mayor valoración media en sus estadísticas para dicha temporada (valoración = suma de estadísticas / 4)

yo hice esto:

SELECT j.nombre, (e.puntos_por_partido+asistencias_por_partido+tapones_por_partido+rebotes_por_partido)/4 AS valoracion
FROM jugadores j, estadisticas e
WHERE j.codigo=e.jugador
GROUP BY temporada
HAVING MAX(valoracion)

lo que me sale es la valoracion pero no del jugador que tiene mas valoracion sino del primero de cada temporada.

pej: si en la temporada 00/01 hay dos jugadores el jugador 1 y jugador 2, el jugador 1 tiene una valoracion de 50 y el 2 de 75, si ejecutase el select de arriba me devolveria el jugador 1 por que es el primero y no el dos que es el que tiene mas y no se por qu, seguro es una tonteria pero agradecería vuestra ayuda.

gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 102
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Ayuda con consulta sql

Publicado por Francisco (32 intervenciones) el 17/10/2019 19:16:21
Hola

El MAX en HAVING es para filtrar por ejemplo MAX() > 1

Intenta esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
WITH est AS (
    SELECT e.jugador,
           e.temporada,
           MAX((e.puntos_por_partido+e.asistencias_por_partido+e.tapones_por_partido+rebotes_por_partido)/4) AS valoracion
    FROM estadisticas e
    GROUP BY e.temporada, e.jugador
),
jugador_teporada AS (
        SELECT DISTINCT e.jugador, e.temporada
            FROM estadisticas e
)
SELECT jt.temporada, j.nombre AS jugador, est.valoracion AS MVP
    FROM jugador_temporada jt
    INNER JOIN est ON  est.jugador = est.jugador AND est.temporada = jt.temporada
    INNER JOIN jugadores ON j j.codigo = jt.jugador
    ORDER BY jt.temporada DESC, est.valoracion DESC

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar