Saya sarankan date_trunc()
alih-alih. Itu memotong date
/ timestamp
ke unit yang diberikan.
Karena dua alasan:
-
Anda ingin jumlah pesanan pada bulan Agustus tahun tertentu, seperti 2012, bukan jumlah untuk Agustus dari semua tahun dalam tabel.
date_trunc('month', orderdate)
melakukan hal itu dan mencegah Anda mencampur beberapa tahun secara tidak sengaja. Anda mendapatkan beberapa baris selama beberapa tahun. -
Anda berdua dapat
ORDER BY
danGROUP BY
ekspresi yang satu ini, kuerinya sedikit lebih cepat.
SELECT to_char(date_trunc('month', orderdate), 'Mon') AS "Month" -- repeat expr.
,count(*) AS "Quantity"
FROM orders
GROUP BY date_trunc('month', orderdate) -- 1 item covers it
ORDER BY date_trunc('month', orderdate);
db<>fiddle di sini
Lama sqlfiddle
Untuk nama bulan penuh, seperti yang ditunjukkan oleh contoh pertama Anda:
to_char(date_col, 'Month')
Untuk non-Inggris, nama lokal:
to_char(date_col, 'TMMonth')