Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como somar os valores duplicados da tabela mysql

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

Neste caso você deve ter Ref_Nr no grupo por para obter os resultados desejados. uid, baseado em dados de amostra, não é necessário; mas é aconselhável sempre agrupar pelos campos não agregados da seleção no grupo por. A única razão pela qual isso funciona no mySQL é porque eles estendem o grupo por ; a maioria dos outros RDBMS geraria um erro sobre os campos não agregados ausentes no grupo por. Na versão 5.7.5 e superior, este recurso é desabilitado por padrão quando habilitado por padrão antes.

Por que ref_nr é necessário no grupo:

O mecanismo mySQL acredita que você deseja apenas agrupar por data. Assim, todos os ref_NR's são somados e o sistema simplesmente escolhe um por data para exibir; o mesmo para uid; mas como são todos iguais; você não se importa. Este não é o caso do ref_nr.

Então, para resolver o problema, basta adicionar ref_nr para o grupo por e fora do bom de adicionar UID . Portanto, é bom de para agrupar por todas as colunas não agregadas da seleção para o grupo por.