Đôi khi bạn có thể cần lấy hàng cuối cùng của bảng hoặc lấy hàng cuối cùng cho mỗi nhóm trong PostgreSQL. Đây là cách lấy bản ghi cuối cùng cho mỗi nhóm trong PostgreSQL.
Nhận hàng cuối cùng của bảng
Giả sử bạn có bảng PostgreSQL sau.
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
Phần thưởng đã đọc:Hàm tạo PostgreSQL
Đây là truy vấn để lấy hàng cuối cùng của bảng, tùy thuộc vào cách các hàng của bạn được sắp xếp. Trong ví dụ trên, vì bản ghi của chúng tôi được thêm theo dấu thời gian, chúng tôi chọn hàng có dấu thời gian mới nhất.
postgres=# select * from product_sales order by order_date desc limit 1; product | order_date | sale ---------+---------------------+------ C | 2020-05-03 09:50:00 | 1850
Trong truy vấn trên, chúng tôi sắp xếp các hàng theo thứ tự giảm dần của dấu thời gian và chọn 1 hàng trên cùng bằng cách sử dụng mệnh đề LIMIT.
Phần thưởng đã đọc:PostgreSQL Tạo giản đồ
Nhận bản ghi cuối cùng cho mỗi nhóm
Đây là truy vấn SQL để lấy hàng cuối cùng cho mỗi nhóm, tức là mỗi sản phẩm.
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
Trong truy vấn trên, trước tiên, chúng tôi sắp xếp các hàng theo sản phẩm (tăng dần) và order_date (giảm dần). Sau đó, chúng tôi sử dụng mệnh đề DISTINCT ON để chỉ chọn bản ghi cao nhất cho mỗi nhóm, không là gì ngoài bản ghi cuối cùng cho mỗi nhóm.
Phần thưởng đọc:Cách tạo biểu đồ trong PostgreSQL
Hy vọng rằng bây giờ bạn có thể dễ dàng lấy hàng cuối cùng cho mỗi nhóm trong PostgreSQL.
Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!