columns - sum distinct mysql
Consulta SQL: utilizando DISTINCT/UNIQUE y SUM() en una declaraciĆ³n (2)
En lugar de usar distinct, puede agrupar por sus campos no agregados (es decir, nombre, clase, caracter). De esta forma puedes usar tus agregados: max, sum, ¡y aún tendrás tus caracteres distintivos!
EL PROBLEMA
Tengo cuatro servidores de juego recopilando datos. Poniendo datos en una sola tabla. Desafortunadamente, esto causa cuatro entradas por estadística para un jugador.
LO QUE QUIERO
Quiero un registro y SUMA () en ciertas columnas.
Publicaré una declaración que escribí que no funciona, pero sabrá lo que me gustaría lograr.
SELECT DISTINCT( Name ),
Max(Level),
Class,
Sum(Kills),
Sum(Deaths),
Sum(Points),
Sum(TotalTime),
Sum(TotalVisits),
CharacterID
FROM Characters
WHERE Name LIKE ''$value%''
OR CharacterID LIKE ''$value''
ORDER BY Name ASC;
DISCULPAS
Todavía soy nuevo en SQL.
Permítanme comenzar diciendo que las filas duplicadas en su base de datos son realmente menos que ideales. Una base de datos completamente normalizada hace que los datos sean mucho más fáciles de manipular sin que aparezcan anomalías aleatorias.
Sin embargo, para responder a su pregunta, esto es simplemente lo que dweiss dijo poner en el código (usando group by ):
SELECT
name,
MAX(Level),
Class,
SUM(Kills),
SUM(Deaths),
SUM(Points),
SUM(TotalTime),
SUM(TotalVisits),
CharacterID
FROM
Characters
WHERE
Name LIKE ''$value%'' OR CharacterID LIKE ''$value''
GROUP BY
name,
class,
characterid
ORDER BY
Name ASC
;
Asumo nombre, clase, caracterID, son todos iguales para cada jugador, porque esa es la única manera de obtener esos valores allí. De lo contrario, tendrá que usar funciones agregadas en ellos también.