Google bigquery 为什么我的案例给了我聚合错误消息?
我尝试在一个月内使用一个Google bigquery 为什么我的案例给了我聚合错误消息?,google-bigquery,Google Bigquery,我尝试在一个月内使用一个promo\u code字段进行促销分组,其中单个customer\u ID可能有多个交易,并且可能有两个不同的促销代码 SELECT customer_id AS buyer, CASE WHEN COUNT(DISTINCT flag_promo) = 2 THEN 'Mixed' WHEN COUNT(DISTINCT flag_promo) = 1 AND flag_promo = 1 THEN 'Promo' WHEN COUNT(DISTINCT flag_
promo\u code
字段进行促销分组,其中单个customer\u ID
可能有多个交易,并且可能有两个不同的促销代码
SELECT customer_id AS buyer,
CASE
WHEN COUNT(DISTINCT flag_promo) = 2 THEN 'Mixed'
WHEN COUNT(DISTINCT flag_promo) = 1 AND flag_promo = 1 THEN 'Promo'
WHEN COUNT(DISTINCT flag_promo) = 1 AND flag_promo = 0 THEN 'Organic'
END AS promo_group
FROM TABLE
WHERE DATE BETWEEN '2019-04-01' AND '2019-04-30'
GROUP BY 1
ORDER BY 2
它给了我一条错误消息:
SELECT list expression references column flag\u promo在[4:41]处既没有分组也没有聚合。
这是我认为您打算执行的查询:
SELECT
customer_id AS buyer,
CASE WHEN COUNT(DISTINCT flag_promo) = 2 THEN 'Mixed'
WHEN COUNT(DISTINCT flag_promo) = 1 AND MIN(flag_promo) = 1 THEN 'Promo'
WHEN COUNT(DISTINCT flag_promo) = 1 AND MIN(flag_promo) = 2 THEN 'Organic'
END AS promo_group
FROM TABLE
WHERE
DATE BETWEEN '2019-04-01' AND '2019-04-30'
GROUP BY 1
ORDER BY 2;
这假设
flag\u promo
值为1表示promo
,值为2表示Organic
。如果没有,那么我们可以很容易地编辑上面的查询。下面是针对BigQuery标准SQL的
#standardSQL
SELECT customer_id AS buyer,
CASE
WHEN COUNT(DISTINCT flag_promo) > 1 THEN 'Mixed'
WHEN ANY_VALUE(flag_promo) = 1 THEN 'Promo'
WHEN ANY_VALUE(flag_promo) = 2 THEN 'Organic'
END AS promo_group
FROM `project.dataset.table`
WHERE DATE BETWEEN '2019-04-01' AND '2019-04-30'
GROUP BY 1
ORDER BY 2
@TimBiegeleisen-正是这种情况-第二个和第三个只有在第一个失败的情况下才会执行时-只有当计数(不同的标志\u promo)=1时才能执行-现在有意义了吗?回答好+1,我错过了那部分!