इसे आजमाएं:
SELECT count(*) as ct,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+'
END AS grp
FROM records r, accounts a
WHERE r.account_id=a.id
GROUP BY r.account_id, a.id,
CASE
WHEN COUNT(*) < 25 THEN '1-25'
WHEN COUNT(*) >= 25 < 50 THEN '25-50'
WHEN COUNT(*) >= 50 < 100 THEN '50-100'
WHEN COUNT(*) >= 100 < 250 THEN '100-250'
WHEN COUNT(*) >= 250 < 500 THEN '250-500'
WHEN COUNT(*) >= 500 < 1000 THEN '500-1000'
ELSE '1000+' END
ORDER BY count(*)
आपको उस "बकेट" को "परिभाषित" करना होगा जिसमें आप मूल डेटा पंक्तियों को एकत्रित करना चाहते हैं... यह वही है जो ग्रुप बाय क्लॉज के लिए है... यह उन मानदंडों को परिभाषित करता है जिनके द्वारा बेस टेबल में प्रत्येक पंक्ति का विश्लेषण किया जाएगा। निर्धारित करें कि यह किस "बाल्टी" का डेटा है... समूह द्वारा समूह में परिभाषित अभिव्यक्ति या अभिव्यक्ति उन बाल्टी के लिए "परिभाषाएं" हैं।
चूंकि क्वेरी मूल डेटा पंक्तियों को संसाधित करती है, कोई भी पंक्ति जिसके लिए इस अभिव्यक्ति (ओं) का मान मौजूदा बकेट के समान है, उस बकेट में एकत्रित किया जाता है ... कोई भी नई पंक्ति जिसका मान किसी मौजूदा द्वारा दर्शाया नहीं जाता है बकेट एक नई बकेट बनाने का कारण बनता है...