以下是 BigQuery 标准 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 - 所以我在过滤中同时使用了 searched_to 和 searched_from。如果需要,您可以删除 search_from 的过滤器