PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL - Zeile mit zusammengesetztem Maximalwert aus 2 Spalten auswählen

Dies kann mit distinct on() erreicht werden und eine benutzerdefinierte Sortierdefinition für den Leistungstyp:

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

Dies bevorzugt einen höheren Rabatt. Wenn zwei Rabatte gleich sind, ein Benefit_Type von ALL wird als Tie-Breaker verwendet.

Online-Beispiel:http://rextester.com/TFBP17217