sql >> データベース >  >> RDS >> Oracle

Max()関数を使用してグループ値を選択する

    ROW_NUMBERを使用してレコードをランク​​付けし、skuの最大値が#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の場合、次の2つのいずれかを取得します。

    1503818 1636708 0,9440251
    1503818 1636709 0,9440251
    

    特定のもの(たとえば、アイテム番号が大きいもの)が必要な場合は、この基準をRow_NumberのORDERBY句に追加します。

    自分で試したクエリについて:代わりにsku-valueのペアを探す必要があります:

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

    ただし、SKU 1503818と同様に同点の場合、このクエリは両方のレコードを取得します。



    1. SQL-転置する方法は?

    2. SQLDeveloperはスクリプトの実行をサポートしていますか?

    3. ComboBox.ValueMemberおよびDisplayMember

    4. ドライバーは、Secure Sockets Layer(SSL)暗号化を使用してSQLServerへの安全な接続を確立できませんでした