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

PostgreSQL MAX và GROUP BY

Truy vấn ngắn nhất (và có thể nhanh nhất) sẽ là DISTINCT ON , một phần mở rộng PostgreSQL của tiêu chuẩn SQL DISTINCT mệnh đề:

SELECT DISTINCT ON (1)
       id, count, year
FROM   tbl
ORDER  BY 1, 2 DESC, 3;

Các số chỉ vị trí thứ tự trong SELECT danh sách. Bạn có thể đánh vần tên cột cho rõ ràng:

SELECT DISTINCT ON (id)
       id, count, year
FROM   tbl
ORDER  BY id, count DESC, year;

Kết quả được sắp xếp theo id vv mà có thể được hoặc có thể không được chào đón. Nó tốt hơn là "không xác định" trong mọi trường hợp.

Nó cũng phá vỡ mối quan hệ (khi nhiều năm có cùng số lượng tối đa) theo một cách được xác định rõ:chọn năm sớm nhất. Nếu bạn không quan tâm, hãy bỏ year từ ORDER BY . Hoặc chọn năm mới nhất với year DESC .

Đối với nhiều hàng trên mỗi id , các kỹ thuật truy vấn khác (nhiều) nhanh hơn. Xem:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận được lỗi xác thực không thành công với postgresql từ dòng lệnh

  2. Truy vấn DAU / MAU theo thời gian (hàng ngày)

  3. Tạo nhiều hàng từ một hàng dựa trên ngày tháng

  4. Cách tạo lược đồ từ CSV cho Bản sao PostgreSQL

  5. Làm cách nào để thực hiện cập nhật không chặn lớn trong PostgreSQL?