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.