SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
V tomto případě musíte mít Ref_Nr ve skupině od, abyste získali požadované výsledky. uid, založené na vzorových datech, není potřeba; ale je rozumné vždy seskupit podle neagregovaných polí z výběru ve skupině podle. Jediný důvod, proč to v mySQL funguje, je ten, že rozšiřují skupina podle ; většina ostatních RDBMS by vyvolala chybu o chybějících neagregovaných polích ve skupině by. Ve verzi 5.7.5 a vyšší je tato funkce ve výchozím nastavení zakázána, pokud byla dříve povolena.
Proč je ve skupině potřeba ref_nr:
Motor mySQL se domnívá, že chcete seskupit pouze podle data. Všechny ref_NR se tedy sečtou a systém jednoduše vybere jeden pro každé datum, který se zobrazí; totéž pro uid; ale protože jsou všichni stejní; je ti to jedno. To není případ s ref_nr.
Chcete-li problém vyřešit, stačí přidat ref_nr
do skupiny podle a mimo provoz z přidat UID
. Je tedy dobré od do skupiny podle všech neagregovaných sloupců od výběru do skupiny podle.