【问题标题】:Identifying products that a customer owns识别客户拥有的产品
【发布时间】:2020-05-06 14:58:15
【问题描述】:

我想检查我的客户是否拥有 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

【问题讨论】:

    标签: sql group-by google-bigquery pivot


    【解决方案1】:

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

    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
    

    【讨论】:

    • 您好,感谢您的回答。我只是尝试用logical_or 重新表述我的查询,这正是我想要的。谢谢@GMB
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多