PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да получите последния ред на група в PostgreSQL

Понякога може да се наложи да получите последния ред на таблицата или да получите последния ред за група в 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails отчетите не могат да намерят колона, която е там

  2. hibernate не можа да получи следващата стойност на последователността

  3. Как мога да пусна всички таблици в PostgreSQL база данни?

  4. Извличане на последната известна стойност за всяка колона от ред

  5. Как да върна jsonb масив и масив от обекти от моите данни?