««« | »»»
PostgreSQL: generare una sequence “al volo”
A volte cápita di dover numerare i record durante la creazione di report. Una soluzione abbastanza nota è quella di tenere a disposizione una tabella (eventualmente temporanea) che non contiene altro che una sequenza di numeri a 1 a n.
Con PostgreSQL esiste una soluzione più elegante: generate_series. Con questa funzione possiamo scrivere una query come questa:
SELECT pdays.doy, SUM(o.order_total) As sales_total FROM (SELECT CAST('2007-01-01' As date) + n As doy FROM generate_series(0,364) n ) pdays INNER JOIN orders o ON o.sale_date = pdays.doy; GROUP BY pdays.doy ORDER BY pdays.doy
dove pdays è la sequenza di tutti i giorni a partire a partire dal primo Gennaio 2007.
Per proseguire
Commenti e trackback sono disabilitati.