Я думаю, у вас проблема в том, что вы пытаетесь использовать один подзапрос дважды, но вы не можете этого сделать. Вместо этого попробуйте здесь использовать общее табличное выражение (CTE), которое дважды вставит код для этого подзапроса:
WITH cte AS (
SELECT *
FROM ais
WHERE ST_DWithin(geography(point),
ST_SetSRID(ST_MakePoint(-95.0217,29.6111), 4326)::geography,
200000)
)
SELECT rxg._id
FROM cte rxg
INNER JOIN cte b
ON rxg._id != b._id AND
rxg.received_c = b.received_c
WHERE ST_DWITHIN (rxg.point, b.point, 300)
GROUP BY rxg._id;
Обратите внимание, что я заменил ваше неявное соединение старой школы неявным внутренним соединением. Это предпочтительный способ объединения таблиц со стандарта ANSI-92.