coba ini:
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(*)
Anda harus "mendefinisikan" "bucket" yang ingin Anda gabungkan ke dalam baris data asli... Inilah gunanya klausa Group By... Ini mendefinisikan kriteria yang digunakan untuk menganalisis setiap baris dalam tabel dasar tentukan "bucket" mana yang datanya akan diagregasikan... Ekspresi atau ekspresi yang didefinisikan dalam klausa grup menurut adalah "definisi" untuk bucket tersebut.
Saat kueri memproses baris data asli, setiap baris yang nilainya sama dengan keranjang yang ada akan digabungkan ke dalam keranjang itu... Setiap baris baru dengan nilai yang tidak diwakili oleh keranjang yang sudah ada ember menyebabkan ember baru dibuat...