with agg as (
select a, min(d) as d
from x
group by a
having 1 = any(array_agg(b))
)
select distinct on (a, c)
a, c, d
from
x
inner join
agg using (a, d)
order by a, c
अगर min(d)
a
. में अद्वितीय नहीं है समूह तो एक से अधिक संगत c
. मौजूद होना संभव है . उपरोक्त सबसे छोटा c लौटाएगा। अगर आप इसके बजाय सबसे बड़ा करना चाहते हैं
order by a, c desc