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

PostgreSQL-2列から複合最大値を持つ行を選択します

    これは、distinct on()を使用して実現できます。 およびbenefit_typeのカスタムソート定義:

    select distinct on (merchant_id) *
    from offer
    order by merchant_id, 
             discount desc, 
             case when benefit_type = 'ALL' then 1 else 2 end;
    

    これはより高い割引を好みます。 2つの割引が同じ場合、benefit_typeはALL タイブレーカーとして使用されます。

    オンラインの例: http://rextester.com/TFBP17217




    1. 2つのSELECTクエリを組み合わせる

    2. WHEREin句に関するMysqlの問題

    3. MySQL自己結合クエリを最適化する

    4. 列名を取得するためのMySQLクエリ?