PostgreSQL ti consente di ottenere un numero di riga specifico per i tuoi dati per classifica, reportistica e analisi dei dati. Ecco come ottenere il numero di riga in PostgreSQL. Puoi usarlo per ulteriori analisi in base all'ID riga in PostgreSQL.
Come ottenere il numero di riga in PostgreSQL
Ecco come ottenere un numero di riga specifico in PostgreSQL. Vedremo come ottenere il numero di riga utilizzando la funzione della finestra ROW_NUMBER() disponibile in PostgreSQL 8.4+, nonché utilizzando SQL semplice per PostgreSQL <8.4.
Supponiamo che tu abbia la seguente tabella sales(order_date,sale)
postgres=# create table sales(order_date date,sale int); postgres=# insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); postgres=# select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Bonus Leggi:Come calcolare il percentile in PostgreSQL
Come ottenere il numero di riga in PostgreSQL utilizzando ROW_NUMBER()
Da PostgreSQL 8.4, puoi facilmente mostrare il numero di riga in PostgreSQL usando la funzione ROW_NUMBER(). Ecco la query SQL per ottenere l'ID riga in PostgreSQL.
postgres=# select row_number() over(), * from sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-01 | 210 2 | 2020-04-02 | 125 3 | 2020-04-03 | 150 4 | 2020-04-04 | 230 5 | 2020-04-05 | 200 6 | 2020-04-10 | 220 7 | 2020-04-06 | 25 8 | 2020-04-07 | 215 9 | 2020-04-08 | 300 10 | 2020-04-09 | 250
Nella query SQL sopra, utilizziamo la funzione della finestra row_number() per generare il numero di riga per ogni riga. Usiamo anche over() per dire a PostgreSQL di visualizzare il numero di riga per tutte le righe senza alcun ordinamento.
Bonus Leggi:Come calcolare la mediana in PostgreSQL
Se desideri ordinare le righe prima di generare numeri di riga, puoi aggiungere una clausola ORDER BY in OVER(), come mostrato di seguito
postgres=# select row_number() over(order by sale), * from sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-06 | 25 2 | 2020-04-02 | 125 3 | 2020-04-03 | 150 4 | 2020-04-05 | 200 5 | 2020-04-01 | 210 6 | 2020-04-07 | 215 7 | 2020-04-10 | 220 8 | 2020-04-04 | 230 9 | 2020-04-09 | 250 10 | 2020-04-08 | 300
Non è possibile utilizzare la clausola WHERE nelle funzioni della finestra ROW_NUMBER o OVER(). Quindi, se desideri filtrare i dati prima di generare numeri di riga, devi utilizzare la causa WHERE in una sottoquery, come mostrato di seguito
postgres=# select row_number() over(order by sale), * from ( select * from sales where sale>100) filtered_sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-02 | 125 2 | 2020-04-03 | 150 3 | 2020-04-05 | 200 4 | 2020-04-01 | 210 5 | 2020-04-07 | 215 6 | 2020-04-10 | 220 7 | 2020-04-04 | 230 8 | 2020-04-09 | 250 9 | 2020-04-08 | 300
Puoi anche ottenere il numero di riga in PostgreSQL usando generate_series. Tuttavia, è consigliabile non generare ID riga utilizzando generate_series poiché non è scalabile.
Bonus Lettura:come riempire le date mancanti in PostgreSQL usando generate_series
Come ottenere il numero di riga in PostgreSQL (<8.4) senza ROW_NUMBER()
Se usi PostgreSQL <8.4, allora numero_riga() la funzione finestra potrebbe non essere disponibile al suo interno. In tal caso, devi ottenere il numero di riga in PostgreSQL con l'aiuto di un self-join. Ecco la domanda.
postgres=# SELECT count(*) rownum, foo.* FROM sales foo JOIN sales bar ON (foo.order_date <= bar.order_date) GROUP BY foo.order_date, foo.sale ORDER BY rownum ; rownum | order_date | sale --------+------------+------ 1 | 2020-04-10 | 220 2 | 2020-04-09 | 250 3 | 2020-04-08 | 300 4 | 2020-04-07 | 215 5 | 2020-04-06 | 25 6 | 2020-04-05 | 200 7 | 2020-04-04 | 230 8 | 2020-04-03 | 150 9 | 2020-04-02 | 125 10 | 2020-04-01 | 210
Dopo aver ottenuto il numero di riga in PostgreSQL, puoi utilizzare uno strumento di reportistica PostgreSQL per riportare i tuoi dati in una tabella come mostrato di seguito e condividerli con il tuo team.
Se vuoi creare grafici, dashboard e report dal database PostgreSQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.