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

Sử dụng hàm Max () để chọn giá trị nhóm

Xếp hạng các bản ghi với ROW_NUMBER để giá trị tối đa của một sku đạt # 1. Sau đó, chỉ giữ lại những hồ sơ được xếp hạng # 1.

select sku, item, value
from
(
  select 
    mytable.*
    row_number() over (partition by sku order by value desc) as rn
  from mytable
)
where rn = 1;

Đối với SKU 1503818, bạn sẽ nhận được một trong hai điều sau:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Nếu bạn muốn một tiêu chí cụ thể (ví dụ:tiêu chí có số mục cao hơn) thì hãy thêm tiêu chí này vào mệnh đề ORDER BY của Row_Number.

Đối với truy vấn bạn đã tự thử:Thay vào đó, bạn nên tìm kiếm các cặp giá trị sku:

select SKU, ITEM, VALUE from import
where (sku,value) in (select sku, max(value) from import group by sku);

Tuy nhiên, trong trường hợp hòa, như với SKU 1503818, truy vấn này sẽ giúp bạn nhận được cả hai bản ghi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-00933:Lệnh SQL không được kết thúc đúng cách

  2. Cách trả lại danh sách các ngôn ngữ được hỗ trợ trong Oracle

  3. Oracle SQL:Cập nhật một bảng với dữ liệu từ một bảng khác

  4. Bảng phân vùng Oracle

  5. Oracle - Chế độ xem vật chất hóa vẫn có thể truy cập được trong quá trình làm mới hoàn toàn. Cái này hoạt động ra sao?