sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL:seleccione una fila con un valor máximo compuesto de 2 columnas

Esto se puede lograr usando distinct on() y una definición de clasificación personalizada para el tipo_beneficio:

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

Esto prefiere mayor descuento. Si dos descuentos son iguales, un tipo_beneficio de ALL se utiliza como criterio de desempate.

Ejemplo en línea:http://rextester.com/TFBP17217