sql >> Database >  >> RDS >> PostgreSQL

Maanden sorteren terwijl ik ze naar tekst converteer

Ik stel voor date_trunc() in plaats van. Het kapt date af / timestamp naar de opgegeven eenheid.

Om twee redenen:

  1. 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.

  2. U kunt beide ORDER BY en GROUP 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')

Details in de handleiding.



  1. Kolominfo ophalen voor een tabel of weergave in SQL Server (T-SQL:sp_columns)

  2. MySQL View controleren of gegevens NULL zijn

  3. MySQL Tree gerangschikt op ouder en kind

  4. Android - Ruby on Rails - MySQL