PostgreSQL ви позволява да получите конкретен номер на ред за вашите данни за класиране, отчитане и анализ на данни. Ето как да получите номер на ред в PostgreSQL. Можете да го използвате за по-нататъшен анализ въз основа на идентификатора на ред в PostgreSQL.
Как да получите номер на ред в PostgreSQL
Ето как да получите конкретен номер на ред в PostgreSQL. Ще разгледаме как да получим номер на ред с помощта на функцията на прозореца ROW_NUMBER(), налична в PostgreSQL 8.4+, както и с помощта на обикновен SQL за PostgreSQL <8.4.
Да приемем, че имате следната таблица 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
Бонус за четене:Как да изчислим процентил в PostgreSQL
Как да получите номер на ред в PostgreSQL с помощта на ROW_NUMBER()
От PostgreSQL 8.4 можете лесно да покажете номера на ред в PostgreSQL с помощта на функцията ROW_NUMBER(). Ето SQL заявката за получаване на идентификатор на ред в 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
В горната SQL заявка използваме прозоречна функция row_number(), за да генерираме номер на ред за всеки ред. Ние също така използваме over(), за да кажем на PostgreSQL да показва номера на редове за всички редове без никаква подредба.
Бонус за четене:Как да изчислим медиана в PostgreSQL
Ако искате да подредите редове, преди да генерирате номера на редове, можете да добавите клауза ORDER BY в OVER(), както е показано по-долу
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
Не можете да използвате клауза WHERE в функциите на прозореца ROW_NUMBER или OVER(). Така че, ако искате да филтрирате данни, преди да генерирате номера на редове, трябва да използвате причина WHERE в подзаявка, както е показано по-долу
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
Можете също да получите номер на ред в PostgreSQL, като използвате generate_series. Въпреки това е препоръчително да не генерирате идентификатор на ред с помощта на generate_series тъй като не е мащабируем.
Бонус за четене:Как да попълните липсващите дати в PostgreSQL с помощта на generate_series
Как да получа номер на ред в PostgreSQL (<8.4) без ROW_NUMBER()
Ако използвате PostgreSQL <8.4, тогава номер_ред() функцията прозорец може да не е налична в него. В този случай трябва да получите номер на ред в PostgreSQL с помощта на самостоятелно присъединяване. Ето заявката за него.
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
След като получите номер на ред в PostgreSQL, можете да използвате PostgreSQL инструмент за отчитане, за да докладвате данните си в таблица, както е показано по-долу, и да ги споделите с екипа си.
Ако искате да създавате диаграми, табла за управление и отчети от базата данни PostgreSQL, можете да опитате Ubiq. Предлагаме 14-дневен безплатен пробен период.