Ниже для BigQuery Standard SQL
#standardSQL
SELECT email
FROM `project.dataset.table`
GROUP BY email
HAVING COUNTIF(
(segment = 'abandoned_cart' AND exit) OR
(segment = 'purchased_last_7_days' AND NOT exit)
) = 2
Вы можете проверить, поиграть с выше, используя примеры данных из вашего вопроса, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT '1@aol.com' email, 'abandoned_cart' segment, TRUE exit UNION ALL
SELECT '1@aol.com', 'purchased_last_7_days', FALSE UNION ALL
SELECT '2@aol.com', 'abandoned_cart', TRUE UNION ALL
SELECT '2@aol.com', 'purchased_last_7_days', FALSE UNION ALL
SELECT '3@aol.com', 'abandoned_cart', TRUE
)
SELECT email
FROM `project.dataset.table`
GROUP BY email
HAVING COUNTIF(
(segment = 'abandoned_cart' AND exit) OR
(segment = 'purchased_last_7_days' AND NOT exit)
) = 2
с результатом
Row email
1 1@aol.com
2 2@aol.com
Примечание: выше предполагается, что для одного и того же электронного письма нет повторяющихся записей для сегментов / значений выхода (как это выглядит в вашем примере)