SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
В този случай трябва да имате Ref_Nr в групата от, за да получите желаните резултати. uid, базиран на примерни данни, не е необходим; но е разумно винаги да се групират по неагрегираните полета от избраните в групата по. Единствената причина, поради която това работи в mySQL, е, защото те удължават групата от ; повечето други RDBMS биха издали грешка за липсващите неагрегирани полета в групата от. Във версия 5.7.5 и по-нова тази функция е деактивирана по подразбиране, когато е била активирана по подразбиране преди.
Относно защо ref_nr е необходим в групата от:
Двигателят на mySQL вярва, че искате просто да групирате по дата. Така че всички ref_NR се сумират заедно и системата просто избира по един на дата за показване; същото за uid; но тъй като всички са еднакви; не те интересува. Това е в случая с ref_nr.
Така че, за да разрешите проблема, просто добавете ref_nr
към групата чрез и от good от add UID
. Така че е добре от до група по всички неагрегирани колони от избраната в групата по.