Tengo algunas tablas que contienen datos sobre los jugadores y los juegos que han jugado esta temporada en una bolera durante sus ligas. Para qué se utiliza esta consulta en particular, es para ordenar los promedios principales de X este año para hombres y para mujeres. Tengo todo esto abajo, pero todavía tengo un problema en algunos casos particulares cuando algunos jugadores juegan en múltiples ligas y tienen más de uno de sus promedios en la parte superior X.Obtenga el promedio máximo para cada registro distinto en una consulta SQL
Obviamente, solo quiero enumerar las mejores promedio para un jugador dado, así que si el Jugador A tiene el mejor promedio con 200 en la Liga ABC y también el segundo mejor promedio con 198 en la Liga DEF, solo quiero que aparezca el 200.
Aquí hay una versión simplificada de la consulta que me gustaría cambiar, porque ahora tengo que eliminar los duplicados manualmente o tendría que escribir un clasificador en otro idioma, pero preferiría hacerlo en SQL puro . (I sólo se elimina la información irrelevante de la consulta para este ejemplo):
SELECT playerId, ROUND(AVG(score),2)Average, season, leagueName, COUNT(score)NumGames FROM Scores
WHERE season = '2011-2012' AND score > -1
GROUP BY season, playerID, leagueName
ORDER BY Average DESC LIMIT 0,30
Básicamente, la mesa Scores
contiene cada juego individual, un playerId, la temporada en la que se jugó el juego y el leagueName (y otras columnas que no son necesarios en este ejemplo).
El WHERE
es para asegurarse de que el juego se jugó esta temporada y que el puntaje es positivo (-1 es para cuando las personas están ausentes). Agrupo todo por temporada, playerID y leagueName, así que obtengo un promedio de PER LEAGUE para cada jugador en lugar de un promedio de todos los juegos jugados en diferentes ligas.
He intentado utilizar la palabra clave DISTINCT
, pero eso no funciona porque no puedo usar DISTINCT
para una sola columna. También probé otras cosas, pero ninguna de ellas estuvo cerca de funcionar, así que me pregunto si es posible hacerlo o si tendré que recurrir a usar otro idioma para ordenar este conjunto de resultados y eliminar duplicados.
Muy bien, esta es mi respuesta preferida, ya que funciona en una sola consulta sin la necesidad de tablas temporales. ¡Gracias una tonelada! –