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

Cao nhất mỗi nhóm

Giải pháp cụ thể (và nhanh nhất) của Postgres:

select distinct on (out_id) *
from foo
order by out_id, id desc;

Giải pháp SQL tiêu chuẩn sử dụng chức năng cửa sổ (nhanh thứ hai)

select id, x_part, y_part, out_id, out_idx
from (
  select id, x_part, y_part, out_id, out_idx, 
         row_number() over (partition by out_id order by id desc) as rn
  from foo
) t
where rn = 1
order by id;

Lưu ý rằng cả hai giải pháp sẽ chỉ trả về mỗi id một lần, ngay cả khi có nhiều out_id các giá trị giống nhau. Nếu bạn muốn tất cả chúng được trả về, hãy sử dụng dense_rank() thay vì row_number()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ràng buộc khóa ngoại phức tạp trong SQLAlchemy

  2. Nhận các phạm vi ngày liên tiếp khác nhau từ các phạm vi ngày trùng lặp

  3. Postgres Left Tham gia với điều kiện ở đâu

  4. Lỗi PostgreSQL:không thể kết nối với cơ sở dữ liệu template1:không thể kết nối với máy chủ:Không có tệp hoặc thư mục như vậy

  5. Tổng quan về sao chép lôgic trong PostgreSQL