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

Nhận giá trị dựa trên giá trị tối đa của một cột khác được nhóm bởi một cột khác

Bạn có thể tiếp cận điều này bằng cách sử dụng row_number() :

select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
      from table_name t
     ) t
where seqnum = 1;

Bạn có coi điều này là "tao nhã" hơn hay không có lẽ là do sở thích.

Tôi nên chỉ ra rằng điều này hoàn toàn khác với truy vấn của bạn. Điều này được đảm bảo trả về một hàng cho mỗi key; của bạn có thể trả về nhiều hàng. Nếu bạn muốn hành vi đó, chỉ cần sử dụng rank() hoặc 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. Cách lấy mục lớn thứ hai hoặc lớn thứ ba từ một bảng

  2. CRS 11.2.0

  3. Sắp xếp lại các cột của bảng trong Oracle

  4. Oracle XML:Nút Bỏ qua Không tồn tại

  5. Làm cách nào để chuyển đến tệp có định dạng CSV bằng SQLPLUS?