Ini dapat dicapai dengan menggunakan distinct on() dan definisi pengurutan khusus untuk tipe_manfaat:
select distinct on (merchant_id) *
from offer
order by merchant_id,
discount desc,
case when benefit_type = 'ALL' then 1 else 2 end;
Ini lebih memilih diskon yang lebih tinggi. Jika dua diskon sama, sebuah benefit_type dari ALL digunakan sebagai pemutus ikatan.
Contoh online:https://rextester.com/TFBP17217