Лучше Join'ы для таких запросов использовать
SELECT
ships.sudovlad,
s1.gruz_pass as summa,
EXTRACT(YEAR FROM s1.data_vih_p_ot) as years,
((s2.gruz_pass - s1.gruz_pass) / s1.gruz_pass * 100) AS percent,
s2.gruz_pass as summa2,
EXTRACT(YEAR FROM s2.data_vih_p_ot) AS years2
FROM ships
LEFT JOIN ships as s1
ON ships.sudovlad = s1.sudovlad AND EXTRACT(YEAR FROM s1.data_vih_p_ot)=2017 AND s1.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
LEFT JOIN ships as s2
ON ships.sudovlad = s2.sudovlad AND EXTRACT(YEAR FROM s2.data_vih_p_ot)=2018 AND s2.sudovlad IN ('Русфлот, ООО', 'АрктикТранс ОИЛ, ООО','pere')
GROUP BY sudovlad