Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So summieren Sie die doppelten Werte aus der MySQL-Tabelle

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

In diesem Fall müssen Sie Ref_Nr in der Gruppe von haben, um die gewünschten Ergebnisse zu erhalten. uid, basierend auf Beispieldaten, wird nicht benötigt; Es ist jedoch ratsam, immer nach den nicht aggregierten Feldern aus der Auswahl in der Gruppierung nach zu gruppieren. Der einzige Grund, warum dies in mySQL funktioniert, ist, dass sie sich erweitern die Gruppe von ; Die meisten anderen RDBMS würden einen Fehler über die fehlenden nicht aggregierten Felder in der Gruppe nach ausgeben. In Version 5.7.5 und höher ist diese Funktion standardmäßig deaktiviert, wo sie zuvor standardmäßig aktiviert war.

Warum ref_nr in der Gruppe benötigt wird von:

Die MySQL-Engine glaubt, dass Sie nur nach Datum gruppieren möchten. Also werden alle ref_NRs summiert und das System wählt einfach eine pro Datum zur Anzeige aus; dasselbe für uid; aber da sie alle gleich sind; es ist dir egal. Dies ist bei der ref_nr der Fall.

Um das Problem zu lösen, fügen Sie einfach ref_nr hinzu zur Gruppe von und aus dem Guten von UID hinzufügen . Daher ist es gut, alle nicht aggregierten Spalten von select in die group by zu gruppieren.