Ниже для BigQuery Standard SQL
Первый шаг - найти, кто из посетителей сделал, что
#standardSQL
SELECT visitor_id, 'Y' = MAX(booked) booked,
1 < COUNTIF(searched_to IN ('JFK', 'LGA', 'EWR', 'MSY')
OR searched_from IN ('JFK', 'LGA', 'EWR', 'MSY')) extended
FROM `project.dataset.your_table`
GROUP BY visitor_id
, если вы попробуете это с фиктивными данными, как показано ниже
WITH `project.dataset.your_table` AS (
SELECT 11 visitor_id, 'JFK' searched_to, 'LCY' searched_from, 'N' booked UNION ALL
SELECT 11, 'LGA', 'LCY', 'N' UNION ALL
SELECT 11, 'EWR', 'LCY', 'N' UNION ALL
SELECT 12, 'JFK', 'LCY', 'N' UNION ALL
SELECT 13, 'MSY', 'LTN', 'Y' UNION ALL
SELECT 14, 'JFK', 'LTN', 'N' UNION ALL
SELECT 14, 'JFK', 'LGW', 'N' UNION ALL
SELECT 14, 'EWR', 'LCY', 'Y' UNION ALL
SELECT 15, 'GOA', 'MSY', 'N'
)
результат будет как
Row visitor_id booked extended
1 11 false true
2 12 false false
3 15 false false
4 13 true false
5 14 true true
следующий шаг - сделать окончательный подсчет
#standardSQL
SELECT extended, booked, COUNT(1) cnt
FROM (
SELECT visitor_id, 'Y' = MAX(booked) booked,
1 < COUNTIF(searched_to IN ('JFK', 'LGA', 'EWR', 'MSY')
OR searched_from IN ('JFK', 'LGA', 'EWR', 'MSY')) extended
FROM `project.dataset.your_table`
GROUP BY visitor_id
)
GROUP BY extended, booked
это вернет
Row extended booked cnt
1 false false 2
2 false true 1
3 true true 1
4 true false 1
Вы можете протестировать, поиграть с целым запросом, используя фиктивные данные из вашего вопроса
#standardSQL
WITH `project.dataset.your_table` AS (
SELECT 11 visitor_id, 'JFK' searched_to, 'LCY' searched_from, 'N' booked UNION ALL
SELECT 11, 'LGA', 'LCY', 'N' UNION ALL
SELECT 11, 'EWR', 'LCY', 'N' UNION ALL
SELECT 12, 'JFK', 'LCY', 'N' UNION ALL
SELECT 13, 'MSY', 'LTN', 'Y' UNION ALL
SELECT 14, 'JFK', 'LTN', 'N' UNION ALL
SELECT 14, 'JFK', 'LGW', 'N' UNION ALL
SELECT 14, 'EWR', 'LCY', 'Y' UNION ALL
SELECT 15, 'GOA', 'MSY', 'N'
)
SELECT extended, booked, COUNT(1) cnt
FROM (
SELECT visitor_id, 'Y' = MAX(booked) booked,
1 < COUNTIF(searched_to IN ('JFK', 'LGA', 'EWR', 'MSY')
OR searched_from IN ('JFK', 'LGA', 'EWR', 'MSY')) extended
FROM `project.dataset.your_table`
GROUP BY visitor_id
)
GROUP BY extended, booked
Примечание: в заголовке вопроса вы упомянули searched for destination
, но в самом вопросе вы упомянули, что посетитель # 15 должен быть включен - поэтому я использовал и фильтрацию seek_to, и seek_from. при необходимости вы можете удалить фильтр для search_from