PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để chọn id với nhóm ngày tối đa theo danh mục trong PostgreSQL?

Đây là một trường hợp sử dụng hoàn hảo cho DISTINCT ON - một phần mở rộng cụ thể của Postgres của DISTINCT tiêu chuẩn :

SELECT DISTINCT ON (category)
       id  -- , category, date  -- any other column (expression) from the same row
FROM   tbl
ORDER  BY category, date DESC;

Cẩn thận với thứ tự sắp xếp giảm dần. Nếu cột có thể là NULL, bạn có thể muốn thêm NULLS LAST :

  • Sắp xếp theo ASC cột, nhưng giá trị NULL trước?

DISTINCT ON là đơn giản và nhanh chóng. Giải thích chi tiết trong câu trả lời liên quan này:

  • Chọn hàng đầu tiên trong mỗi GROUP BY nhóm?

Đối với các bảng lớn có nhiều hàng trên mỗi category xem xét một cách tiếp cận thay thế:

  • Tối ưu hóa truy vấn GROUP BY để truy xuất hàng mới nhất cho mỗi người dùng
  • Tối ưu hóa truy vấn tối đa theo nhóm


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chèn dữ liệu CSV vào cơ sở dữ liệu PostgreSQL (cơ sở dữ liệu từ xa)

  2. Trong Rails, Không thể tạo cơ sở dữ liệu cho {adapter => postgresql,

  3. Laravel:Lỗi [PDOException]:Không thể tìm thấy trình điều khiển trong PostgreSQL

  4. uWSGI, Flask, sqlalchemy và postgres:Lỗi SSL:giải mã không thành công hoặc mac ghi lỗi

  5. Tạo sql với truy vấn con dưới dạng một cột trong câu lệnh chọn bằng cách sử dụng SQLAlchemy