Istället för att gruppera på alla dessa fält, en enklare (och snabbare) lösning (från här ) kan vara:
GROUP BY UNIX_TIMESTAMP(timestamp_local)/3600
Jag kan inte föreställa mig att din fråga ger de resultat du vill ha (om jag förstår dina krav rätt). Jag förstår dina krav som, när det inte finns några rader för en given timme, vill du beräkna summan av alla rader med timme
Det finns inget enkelt och effektivt sätt att göra detta i MySQL som jag känner till, jag skulle föreslå att du skapar en tillfällig tabell med alla möjliga grupperingsvärden inom det intervall som du tittar på (förmodligen med en loop). Du kan förmodligen ställa in den här tabellen i förväg under några år, och eventuellt lägga till rader efter behov. Då kan du bara gå och gå med i det här bordet och ditt bord.
Om du använde MSSQL kunde du ha använt en rekursiv CTE, även om detta förmodligen skulle ha gått väldigt långsamt. Titta på denna
eller googla "mysql cte" för MySQL-alternativ. Sättet att göra detta med rekursion är att (vänster) gå med på samma bord upprepade gånger under HOUR = HOUR+1
tills du får ett icke-NULL-värde, sluta sedan. För var och en av dessa kommer du att beräkna summan baklänges.