SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
In questo caso è necessario avere Ref_Nr nel gruppo by per ottenere i risultati desiderati. uid, basato su dati di esempio, non è necessario; ma è consigliabile raggruppare sempre in base ai campi non aggregati dalla selezione nel raggruppamento per. L'unico motivo per cui funziona in MySQL è perché estende il gruppo da ; la maggior parte degli altri RDBMS genererebbe un errore sui campi non aggregati mancanti nel gruppo per. Nella versione 5.7.5 e successive questa funzione è disabilitata per impostazione predefinita se abilitata per impostazione predefinita in precedenza.
Sul motivo per cui ref_nr è necessario nel gruppo da:
Il motore MySQL crede che tu voglia semplicemente raggruppare per data. Quindi tutti i ref_NR vengono sommati e il sistema ne sceglie semplicemente uno per data da visualizzare; lo stesso per uid; ma poiché sono tutti uguali; non ti interessa. Questo è il caso di ref_nr.
Quindi, per risolvere il problema, aggiungi semplicemente ref_nr
al gruppo per e fuori di buono da aggiungere UID
. Quindi è bene raggruppare per tutte le colonne non aggregate dalla selezione al raggruppamento per.