Dit kan worden bereikt met behulp van distinct on()
en een aangepaste sorteerdefinitie voor het 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;
Deze geeft de voorkeur aan een hogere korting. Als twee kortingen hetzelfde zijn, een benefit_type van ALL
wordt gebruikt als de tie-breaker.
Online voorbeeld:http://rextester.com/TFBP17217