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.