Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment additionner les valeurs en double de la table mysql

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

Dans ce cas, vous devez avoir Ref_Nr dans le groupe par pour obtenir les résultats souhaités. uid, basé sur des exemples de données, n'est pas nécessaire ; mais il est sage de toujours regrouper par les champs non agrégés de la sélection dans le groupe par. La seule raison pour laquelle cela fonctionne dans mySQL est qu'ils étendent le groupe par ; la plupart des autres SGBDR renverraient une erreur concernant les champs non agrégés manquants dans le groupe par. Dans la version 5.7.5 et supérieure, cette fonctionnalité est désactivée par défaut là où elle était activée par défaut auparavant.

Pourquoi ref_nr est nécessaire dans le groupe par :

Le moteur mySQL pense que vous souhaitez simplement regrouper par date. Ainsi, tous les ref_NR sont additionnés et le système en choisit simplement un par date à afficher ; idem pour uid ; mais puisqu'ils sont tous pareils; vous ne vous souciez pas. C'est le cas avec le ref_nr.

Donc, pour résoudre le problème, ajoutez simplement ref_nr au groupe by et out of good from add UID . Il est donc bon de grouper par toutes les colonnes non agrégées de la sélection au groupe par.