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.