Navrhuji date_trunc()
namísto. Zkrátí date
/ timestamp
k dané jednotce.
Ze dvou důvodů:
-
Chcete počet objednávek v srpnu určitého roku, například 2012, ne součet za srpen všech let v tabulce.
date_trunc('month', orderdate)
dělá přesně to a zabraňuje náhodnému smíchání několika let. Získáte více řádků na několik let. -
Oba můžete
ORDER BY
aGROUP BY
tento jeden výraz je dotaz o něco rychlejší.
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 zde
Starý sqlfiddle
U názvů celých měsíců, jako je váš první příklad:
to_char(date_col, 'Month')
Pro neanglické lokalizované názvy:
to_char(date_col, 'TMMonth')