Ваша логика (попытки) подсчитывает количество заказов , а не количество клиентов . Вот два подхода:
SELECT COUNT(DISTINCT c.id)
FROM customers c JOIN
orders o
ON c.id = o.customer_id AND
o.order_date >= c.joining_date AND
o.order_date < c.joining_date + interval '6 month';
Или более эффективно, как:
SELECT COUNT(*)
FROM customers c
WHERE EXISTS (SELECT 1
FROM orders o
WHERE c.id = o.customer_id AND
o.order_date >= c.joining_date AND
o.order_date < c.joining_date + interval '6 month'
);