sql >> Databasteknik >  >> RDS >> Oracle

Använd funktionen Max() för att välja gruppvärden

Rangordna posterna med ROW_NUMBER så att maxvärdet för en SKU får #1. Behåll sedan endast dessa poster rankade som nummer 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;

För SKU 1503818 får du någon av dessa två:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Om du vill ha en viss (t.ex. den med det högre artikelnumret) lägger du till detta kriterium i Row_Numbers ORDER BY-sats.

När det gäller frågan du själv försökte:Du bör leta efter sku-värdepar istället:

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

I händelse av oavgjort, som med SKU 1503818, kommer denna fråga dock att ge er båda poster.



  1. 8 sätt att lägga till dagar till ett datum i MariaDB

  2. PDOException SQLSTATE[HY000] [2002] Ingen sådan fil eller katalog

  3. PostgreSQL lastbalansering i molnet på ett enkelt sätt

  4. Hur man genererar skript för att aktivera alla främmande nyckelbegränsningar i SQL Server Database - SQL Server / TSQL Tutorial Del 78