sql >> Databáze >  >> RDS >> Oracle

Použití funkce Max() k výběru skupinových hodnot

Seřaďte záznamy pomocí ROW_NUMBER, aby maximální hodnota pro sku byla #1. Pak si ponechte pouze ty záznamy, které se umístily na #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;

Pro SKU 1503818 získáte jednu z těchto dvou:

1503818 1636708 0,9440251
1503818 1636709 0,9440251

Pokud chcete konkrétní (např. ten s vyšším číslem položky), přidejte toto kritérium do klauzule ORDER BY v Row_Number.

Pokud jde o dotaz, který jste sami vyzkoušeli:Místo toho byste měli hledat páry sku-hodnota:

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

V případě shody, jako u SKU 1503818, vám však tento dotaz poskytne oba záznamy.



  1. Spuštění více instancí PostgreSQL na jednom hostiteli

  2. Odstraňte duplikát z tabulky

  3. Jak získat seznam měsíců mezi 2 danými daty pomocí dotazu?

  4. Jak použít SqlCommand k VYTVOŘENÍ DATABÁZE s parametrizovaným názvem db?