sql >> Base de Datos >  >> RDS >> Mysql

Cómo sumar los valores duplicados de la tabla mysql

SELECT  uid 
     ,  date 
     , SUM(USD) AS USD 
     ,  Ref_Nr  
  FROM my_table
 GROUP 
    BY `date`, Ref_Nr, uid;

En este caso, debe tener Ref_Nr en el grupo para obtener los resultados deseados. uid, basado en datos de muestra, no es necesario; pero es aconsejable agrupar siempre por los campos no agregados de la selección en el grupo por. La única razón por la que esto funciona en mySQL es porque extienden el grupo por ; la mayoría de los otros RDBMS generarían un error sobre los campos no agregados que faltan en el grupo por. En la versión 5.7.5 y posteriores, esta función está deshabilitada de manera predeterminada donde estaba habilitada de manera predeterminada anteriormente.

En cuanto a por qué se necesita ref_nr en el grupo por:

El motor mySQL cree que solo desea agrupar por fecha. Entonces, todos los ref_NR se suman y el sistema simplemente elige uno por fecha para mostrar; lo mismo para fluido; pero como son todos iguales; no te importa Este es el caso con el ref_nr.

Entonces, para resolver el problema, simplemente agregue ref_nr al grupo por y fuera de bien de agregar UID . Por lo tanto, es bueno agrupar por todas las columnas no agregadas de la selección en el grupo por.