SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
W tym przypadku musisz mieć Ref_Nr w grupie przez, aby uzyskać pożądane wyniki. uid, oparty na przykładowych danych, nie jest potrzebny; ale mądrze jest zawsze grupować według pól niezagregowanych z wybranych w grupie według. Jedynym powodem, dla którego działa to w mySQL, jest to, że rozszerzają się grupa przez ; większość innych RDBMS wyrzuciłaby błąd dotyczący brakujących pól niezagregowanych w grupie według. W wersji 5.7.5 i nowszych funkcja ta jest domyślnie wyłączona, jeśli wcześniej była domyślnie włączona.
Dlaczego ref_nr jest potrzebny w grupie przez:
Silnik mySQL uważa, że chcesz po prostu pogrupować według daty. Tak więc wszystkie ref_NR są sumowane, a system po prostu wybiera jeden na datę do wyświetlenia; to samo dla uid; ale ponieważ wszystkie są takie same; nie obchodzi cię to. Tak jest w przypadku ref_nr.
Aby rozwiązać problem, po prostu dodaj ref_nr
do grupy przez i z powodu dodania UID
. Dlatego dobrze jest pogrupować według wszystkich niezagregowanych kolumn z zaznaczenia do grupy według.