PostgreSQL ermöglicht es Ihnen, eine bestimmte Zeilennummer für Ihre Daten für Rankings, Berichte und Datenanalysen zu erhalten. So erhalten Sie die Zeilennummer in PostgreSQL. Sie können es für weitere Analysen basierend auf der Zeilen-ID in PostgreSQL verwenden.
So erhalten Sie die Zeilennummer in PostgreSQL
So erhalten Sie eine bestimmte Zeilennummer in PostgreSQL. Wir werden uns ansehen, wie man die Zeilennummer mit der Fensterfunktion ROW_NUMBER() erhält, die in PostgreSQL 8.4+ verfügbar ist, sowie die Verwendung von einfachem SQL für PostgreSQL <8.4.
Nehmen wir an, Sie haben die folgende Tabelle 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-Lesetext:So berechnen Sie das Perzentil in PostgreSQL
So erhalten Sie die Zeilennummer in PostgreSQL mit ROW_NUMBER()
Seit PostgreSQL 8.4 können Sie die Zeilennummer in PostgreSQL ganz einfach mit der Funktion ROW_NUMBER() anzeigen. Hier ist die SQL-Abfrage zum Abrufen der Zeilen-ID 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
In der obigen SQL-Abfrage verwenden wir die Fensterfunktion row_number(), um die Zeilennummer für jede Zeile zu generieren. Wir verwenden auch over(), um PostgreSQL anzuweisen, die Zeilennummer für alle Zeilen ohne Sortierung anzuzeigen.
Bonus-Lesetext:So berechnen Sie den Median in PostgreSQL
Wenn Sie Zeilen sortieren möchten, bevor Sie Zeilennummern generieren, können Sie eine ORDER BY-Klausel in OVER() hinzufügen, wie unten gezeigt
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
Sie können die WHERE-Klausel nicht in ROW_NUMBER- oder OVER()-Fensterfunktionen verwenden. Wenn Sie also Daten filtern möchten, bevor Sie Zeilennummern generieren, müssen Sie die WHERE-Ursache in einer Unterabfrage verwenden, wie unten gezeigt
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
Sie können die Zeilennummer auch in PostgreSQL mit generate_series abrufen. Es ist jedoch ratsam, die Zeilen-ID nicht mit generate_series zu generieren da es nicht skalierbar ist.
Bonus-Lesetext:So füllen Sie fehlende Daten in PostgreSQL mithilfe von generate_series
aus
So erhalten Sie die Zeilennummer in PostgreSQL (<8.4) ohne ROW_NUMBER()
Wenn Sie PostgreSQL <8.4 verwenden, dann row_number() Die Fensterfunktion ist darin möglicherweise nicht verfügbar. In diesem Fall müssen Sie die Zeilennummer in PostgreSQL mit Hilfe eines Self-Joins abrufen. Hier ist die Abfrage dafür.
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
Nachdem Sie die Zeilennummer in PostgreSQL erhalten haben, können Sie ein PostgreSQL-Berichtstool verwenden, um Ihre Daten wie unten gezeigt in einer Tabelle zu melden und mit Ihrem Team zu teilen.
Wenn Sie Diagramme, Dashboards und Berichte aus der PostgreSQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.