Только две лодки на цвет:
select color, min(bname) as boat1, max(bname) as boat2
from boat
group by color
having count(*) > 1
order by color;
Все лодки на цвет, две на ряд:
select b1.color, b1.bname as boat1, b2.bname as boat2
from boat b1
join boat b2 on b2.bname > b1.bname and b2.color = b1.color
order by b1.color;
Все лодки на цвет в одном ряду:
select color, string_agg(bname, ', ' order by bname) as boats
from boat
group by color
having count(*) > 1
order by color;