उन सभी क्षेत्रों पर समूह बनाने के बजाय, एक सरल (और तेज़) समाधान (यहां ) हो सकता है:
GROUP BY UNIX_TIMESTAMP(timestamp_local)/3600
मैं कल्पना नहीं कर सकता कि आपकी क्वेरी आपके इच्छित परिणाम लौटाती है (यदि मैं आपकी आवश्यकताओं को सही ढंग से समझता हूं)। मैं आपकी आवश्यकताओं को समझता हूं, जब किसी दिए गए घंटे के लिए कोई पंक्तियाँ नहीं होती हैं, तो आप घंटे के साथ सभी पंक्तियों के योग की गणना करना चाहते हैं। MySQL खाली ग्रुपिंग (उप-क्वेरी भाग के लिए) का चयन नहीं करेगा।
MySQL में ऐसा करने का कोई आसान प्रभावी तरीका नहीं है जिसे मैं जानता हूं, मैं उस सीमा में सभी संभावित समूह मूल्यों के साथ एक अस्थायी तालिका बनाने का सुझाव दूंगा जो आप देख रहे हैं (शायद एक लूप के साथ)। आप संभवतः इस तालिका को कुछ वर्षों के लिए पहले से सेट कर सकते हैं, और संभवतः आवश्यकतानुसार पंक्तियाँ जोड़ सकते हैं। तब आप बस इस तालिका और अपनी तालिका में शामिल हो सकते हैं।
यदि आप एमएसएसक्यूएल का उपयोग कर रहे थे, तो आप एक रिकर्सिव सीटीई का उपयोग कर सकते थे, हालांकि यह शायद बहुत धीमा होता। यह देखें
या MySQL विकल्पों के लिए Google "mysql cte"। रिकर्सन के साथ ऐसा करने का तरीका HOUR = HOUR+1
के लिए एक ही टेबल पर बार-बार शामिल होना है (बाएं) जब तक आपको एक गैर-शून्य मान न मिल जाए, तब तक रुकें। इनमें से प्रत्येक के लिए आप पिछली राशि की गणना करेंगे।