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,我错过了那部分!