SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
In dit geval moet u Ref_Nr in de groep door hebben om de gewenste resultaten te krijgen. uid, gebaseerd op voorbeeldgegevens, is niet nodig; maar het is verstandig om altijd te groeperen op de niet-geaggregeerde velden van de select in de group by. De enige reden waarom dit werkt in mySQL is omdat ze uitbreiden de groep door ; de meeste andere RDBMS zouden een foutmelding geven over de ontbrekende niet-geaggregeerde velden in de groep door. In versie 5.7.5 en hoger is deze functie standaard uitgeschakeld waar deze eerder standaard was ingeschakeld.
Waarom ref_nr nodig is in de groep door:
De mySQL-engine gelooft dat u alleen op datum wilt groeperen. Dus alle ref_NR's worden bij elkaar opgeteld en het systeem kiest er gewoon één per datum om weer te geven; hetzelfde voor uid; maar aangezien ze allemaal hetzelfde zijn; het maakt je niet uit. Dit is niet het geval met de ref_nr.
Dus om het probleem op te lossen, voegt u gewoon ref_nr
. toe aan de groep door en niet goed van add UID
. Het is dus goed van om te groeperen op alle niet-geaggregeerde kolommen van de selectie in de groep op.