Понякога може да се наложи да получите последния ред на таблицата или да получите последния ред за група в PostgreSQL. Ето как да получите последния запис за група в PostgreSQL.
Вземете последния ред на таблицата
Да приемем, че имате следната PostgreSQL таблица.
postgres=#create table product_sales(product varchar(10),
order_date date, sale int);
postgres=#insert into product_sales(product, order_date, sale)
values('A','2020-05-01 03:00:00',250),
('B','2020-05-01 05:30:00',350),
('C','2020-05-01 07:45:00',1250),
('A','2020-05-02 02:34:00',450),
('B','2020-05-02 01:24:00',650),
('C','2020-05-02 12:34:00',1050),
('A','2020-05-03 04:00:45',150),
('B','2020-05-03 05:45:00',250),
('C','2020-05-03 09:50:00',1850);
postgres=# select * from product_sales;
product | order_date | sale
---------+---------------------+------
A | 2020-05-01 03:00:00 | 250
B | 2020-05-01 05:30:00 | 350
C | 2020-05-01 07:45:00 | 1250
A | 2020-05-02 02:34:00 | 450
B | 2020-05-02 01:24:00 | 650
C | 2020-05-02 12:34:00 | 1050
A | 2020-05-03 04:00:45 | 150
B | 2020-05-03 05:45:00 | 250
C | 2020-05-03 09:50:00 | 1850
Бонус четене:Функция за създаване на PostgreSQL
Ето заявката за получаване на последния ред от таблицата, в зависимост от това как са сортирани редовете ви. В горния пример, тъй като нашите записи са добавени по времеви печат, ние избираме реда с най-нов печат.
postgres=# select * from product_sales
order by order_date desc
limit 1;
product | order_date | sale
---------+---------------------+------
C | 2020-05-03 09:50:00 | 1850
В горната заявка сортираме редовете в низходящ ред на времевата марка и избираме горния 1 ред с помощта на клауза LIMIT.
Бонус четене:PostgreSQL Създаване на схема
Вземете последен запис за група
Ето SQL заявката за получаване на последния ред за група, тоест всеки продукт.
postgres=# select distinct on (product) product, order_date, sale
from product_sales
order by product, order_date desc;
product | order_date | sale
---------+---------------------+------
A | 2020-05-03 04:00:45 | 150
B | 2020-05-03 05:45:00 | 250
C | 2020-05-03 09:50:00 | 1850
В горната заявка първо сортираме редовете по продукт (възходящ) и дата_на_поръчка (надолу). След това използваме клаузата DISTINCT ON, за да изберем само най-горния запис за група, който не е нищо друго освен последния запис на група.
Бонус за четене:Как да създадете хистограма в PostgreSQL
Надяваме се, че сега можете лесно да получите последния ред за група в PostgreSQL.
Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!