Google bigquery 计算具有2个where条件的唯一项-bigquery
我有一张这样的桌子:Google bigquery 计算具有2个where条件的唯一项-bigquery,google-bigquery,Google Bigquery,我有一张这样的桌子: email | segment | exit --------------------------------------------- 1@aol.com | abandoned_cart | true 1@aol.com | purchased_last_7_days | false 2@aol.com | abandoned_cart | true 2@aol.com | purchased_last_7
email | segment | exit
---------------------------------------------
1@aol.com | abandoned_cart | true
1@aol.com | purchased_last_7_days | false
2@aol.com | abandoned_cart | true
2@aol.com | purchased_last_7_days | false
3@aol.com | abandoned_cart | true
我正在尝试编写一个查询,以获取同时拥有放弃的购物车=true
和最近7天购买的=false
这是我尝试过但收到的0:
SELECT COUNT(DISTINCT email)
FROM `table_seg_changes`
WHERE (segment_slug = 'purchased_last_7_days' AND exit = false) AND (segment_slug = 'abandoned_cart' AND exit = true)
下面是BigQuery标准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
注意:以上假设同一封电子邮件的段/出口值没有重复条目(如您的示例所示)