PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL - Selecione linha com valor máximo composto de 2 colunas


Isso pode ser feito usando distinct on() e uma definição de classificação personalizada para o tipo de benefício:
select distinct on (merchant_id) *
from offer
order by merchant_id, 
         discount desc, 
         case when benefit_type = 'ALL' then 1 else 2 end;

Isso prefere desconto maior. Se dois descontos forem iguais, um benefício_type de ALL é usado como desempate.

Exemplo online:http://rextester.com/TFBP17217