Ik stel voor date_trunc()
in plaats van. Het kapt date
af / timestamp
naar de opgegeven eenheid.
Om twee redenen:
-
U wilt het aantal bestellingen in augustus van een bepaald jaar, zoals 2012, niet de som voor augustus van alle jaren in de tabel.
date_trunc('month', orderdate)
doet precies dat en voorkomt dat je per ongeluk meerdere jaren mixt. Je krijgt meerdere rijen voor meerdere jaren. -
U kunt beide
ORDER BY
enGROUP BY
deze ene uitdrukking is de zoekopdracht een beetje sneller.
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 hier
Oude sqlfiddle
Voor namen van volledige maanden, zoals uw eerste voorbeeld aangeeft:
to_char(date_col, 'Month')
Voor niet-Engelse, gelokaliseerde namen:
to_char(date_col, 'TMMonth')