Toho lze dosáhnout pomocí distinct on()
a vlastní definici řazení pro 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;
To preferuje vyšší slevu. Pokud jsou dvě slevy stejné, benefit_type ALL
se používá jako nerozhodný výsledek.
Online příklad:http://rextester.com/TFBP17217