识别客户拥有的产品

时间:2020-05-06 14:58:15

标签: sql group-by google-bigquery pivot

我想检查我的客户是否拥有iPhone,iPad或Macbook。 我不是在寻找一个客户拥有多少iPhone,iPad或Macbook,我只是想确定他们是否拥有其中任何一个,或者是否拥有两个,或者是否拥有全部三个。

我正在考虑使用CASE WHEN函数,这是查询:

select customer
, case when AppleProduct = 'iPhone' THEN 'TRUE' ELSE 'FALSE END AS Owns_iPhone
, case when AppleProduct = 'iPad' THEN 'TRUE' ELSE 'FALSE AS Owns_iPad
, case when AppleProduct = 'Macbook' THEN 'TRUE' ELSE 'FALSE' AS Owns_Macbook
from Apple_Product_Ownership

这是我想要得到的结果

customer | Owns_iPhone | Owns_iPad | Owns_Macbook
X          TRUE          TRUE         FALSE
Y          FALSE         TRUE         TRUE
Z          TRUE          FALSE        FALSE

但这就是我要得到的

customer | Owns_iPhone | Owns_iPad | Owns_Macbook
X          TRUE          FALSE       FALSE
X          FALSE         TRUE        FALSE
Y          FALSE         TRUE        FALSE
Y          FALSE         FALSE       TRUE
Z          TRUE          FALSE       FALSE

1 个答案:

答案 0 :(得分:0)

您正在寻找条件聚合。我会将您的查询表达为:

select 
    customer,
    logical_or(AppleProduct = 'iPhone') Owns_iPhone,
    logical_or(AppleProduct = 'iPad') Owns_iPad,
    logical_or(AppleProduct = 'Macbook') Owns_Macbook,
from Apple_Product_Ownership
group by customer