Oracle
 sql >> база данни >  >> RDS >> Oracle

Използване на функцията Max() за избор на групови стойности

Подредете записите с ROW_NUMBER, така че максималната стойност за SK да получи #1. След това запазете само онези записи, класирани #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;

За SKU 1503818 ще получите едно от тези две:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Ако искате конкретен (например този с по-висок номер на артикул), тогава добавете този критерий към клаузата ORDER BY на Row_Number.

Що се отнася до заявката, която опитахте сами:вместо това трябва да търсите двойки sku-value:

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

В случай на равенство, както при SKU 1503818, тази заявка ще ви предостави и двата записа.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Рекурсия в Oracle

  2. Обработка на данни за семена в R12.2 онлайн кръпка

  3. Как да ИЗБЕРЕТЕ от колона тип обект в Oracle 11g?

  4. Как да проверите застояла статистика

  5. Как да заредя голям брой низове, които да съответстват на базата данни на Oracle?