sql >> Database teknologi >  >> RDS >> Oracle

Brug af Max()-funktionen til at vælge gruppeværdier

Rangér posterne med ROW_NUMBER, så maks. værdien for en sku får #1. Behold derefter kun disse optegnelser rangeret som nr. 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;

For SKU 1503818 får du en af ​​disse to:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Hvis du vil have en bestemt (f.eks. den med det højere varenummer), skal du tilføje dette kriterium til Row_Numbers ORDER BY-klausul.

Med hensyn til den forespørgsel, du selv prøvede:Du bør i stedet lede efter sku-værdipar:

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

I tilfælde af uafgjort, som med SKU 1503818, vil denne forespørgsel dog give dig begge poster.



  1. SQL Server:SLET vs TRUNCATE

  2. SQL Server:Gør alle store og små bogstaver til store og små bogstaver/bogstaver

  3. SQL Server-outputklausul til en skalarvariabel

  4. Rådgivning ved brug af pivottabel i Oracle