SQL - NOT EXISTS
SELECT v.customer_id as customer_id , COUNT(1) as count_no_trans FROM Visits v WHERE NOT EXISTS ( SELECT 1 FROM Transactions T WHERE V.VISIT_ID = T.VISIT_ID ) GROUP BY v.customer_id Input: Visits +----------+-------------+ | visit_id | customer_id | +----------+-------------+ | 1 | 23 | | 2 | 9 | | 4 | 30 | | 5 | 54 | | 6 | 96 | | 7 | 54 | | 8 | 54 | +----------+-------------+ Transactions +----------------+----------+--------+ | transaction_id | visit_id | amount | +----------------+----------+--------+ | 2 | 5 | 310 | | 3 | 5 | 300 | | 9 | 5 | 200 | | 12 | 1 | 910 | | 13 | 2 | 970 | +----------------+----------+--------+ Output: +-------------+----------------+ | customer_id | count_no_trans | +-------------+----------------+ | 54 ...