Това може да се постигне с помощта на distinct on()
и персонализирана дефиниция за сортиране за 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;
Това предпочита по-висока отстъпка. Ако две отстъпки са еднакви, benefit_type от ALL
се използва като ключ за тайбрек.
Онлайн пример:http://rextester.com/TFBP17217