multiple columns sql sum like distinct max

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.