Das Wichtige im Verständnis ist die Where Bedingung und das Group By.
Nachdem die Menge laut Where gefiltert ist, wird die Gruppierung (Group by) vorgenommen. Dabei wird exakt angegeben, welche Felder gruppiert werden (im Group by) und welche aggregiert werden (in der Select Clause> sum(..))
Alle Felder müssen (sollten) bei Verwendung von Group By entweder gruppiert oder aggregiert werden.*
Das kann alles beliebig erweitert werden, also where .. nur für Tobias oder so oder mehr Felder ins Select, dann muss die Gruppierung angepasst werden.
Wenn Du mit der Formatfunktion für das Datum rumspielst (z.B. Monat rausnehmen und so für das ganze Jahr aggregieren), musst Du immer beide Stellen anpassen.
"sprachlos": SQL ist eine feine Sache und wenn man es verstanden hat, kann man sich sehr viele Dinge ersparen, die man sonst mühsam im Client "zu Fuß" programmiert, also hier in PHP. Wenn Du mehr davon nutzen willst und weniger Probleme möchtest, solltest Du vielleicht eine andere DB
nehmen als mySQL.
*Das Gruppieren ist bei mySQL sehr heikel, weil es falsche SQL Anweisungen nicht erkennt und trotzdem Ergebnisse liefert, falsche!. Wo Du sonst sowas wie "compiler error" bekämst, bekommst Du dann eben Müllantworten. Die obige "Regel" ist eine Vereinfachung, aber passt fast immer.