基于其他列值的汇总

假设我有下表:

+ ------------ + ------------- +
| 产品编号| customer_id |
+ ------------ + ------------- +
| 一个| c1 |
| 一个| c2 |
| 一个| c3 |
| 一个| c4 |
| b | c1 |
| c | c1 |
| b | c2 |
| d | c2 |
+ ------------ + ------------- +

我想查找每个客户购买(a,b,c)产品的数量以及每个客户购买(a,b,d)产品的数量。我尝试与一起使用COUNTGROUP BY但只设法找到每个客户FIDDLE的购买数量我需要使用CASE WHEN还是DECODE我该如何实现?

预期的输出如下所示:

+ ------------- + ------------- + ------------- +
| CUSTOMER_ID | ABC_PRODUCT | ABD_PRODUCT |
+ ------------- + ------------- + ------------- +
| c1 | 1 | 0 |
| c2 | 0 | 1 |
| c3 | 0 | 0 |
| c4 | 0 | 0 |
+ ------------- + ------------- + ------------- +
戈登·利诺夫

您可以使用单个聚合来执行此操作,而无需子查询。关键是使用带有聚合的嵌套case语句为每个客户计算每个产品的数量。以下确定客户是否拥有每个“捆绑销售商品”:

SELECT CUSTOMER_ID,
       (case when max(case when product_id = 'a' then 1 else 0 end) +
                  max(case when product_id = 'b' then 1 else 0 end) +
                  max(case when product_id = 'c' then 1 else 0 end) = 3
             then 1
             else 0
        end) as ABC,
       (case when max(case when product_id = 'a' then 1 else 0 end) +
                  max(case when product_id = 'b' then 1 else 0 end) +
                  max(case when product_id = 'd' then 1 else 0 end) = 3
             then 1
             else 0
        end) as ABD           
FROM CUSTOMERS_SALES
GROUP BY CUSTOMER_ID;

现在,您的问题实际上是关于此类购买的数量。因此,我假设一个客户可以购买两次每个商品,而您希望它们计算两次。如果是这样,那么数量是最少的任何计数的值。您也可以得到以下信息:

SELECT CUSTOMER_ID,
       least(sum(case when product_id = 'a' then 1 else 0 end),
             sum(case when product_id = 'b' then 1 else 0 end),
             sum(case when product_id = 'c' then 1 else 0 end) 
            ) as ABC,
       least(sum(case when product_id = 'a' then 1 else 0 end),
             sum(case when product_id = 'b' then 1 else 0 end),
             sum(case when product_id = 'd' then 1 else 0 end) 
            ) as ABD
FROM CUSTOMERS_SALES
GROUP BY CUSTOMER_ID;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

汇总其他值的列

来自分类Dev

如何基于其他2列汇总熊猫列的计数

来自分类Dev

如何基于其他分类值汇总矩阵?

来自分类Dev

基于其他列值的估算值

来自分类Dev

基于其他列的值的条件更改

来自分类Dev

基于其他列的 TSQL 聚合值

来自分类Dev

pandas groupby按总和汇总特定列,按最常见值汇总其他列

来自分类Dev

基于其他列将列中的值相乘

来自分类Dev

MySQL更新基于其他列值的增量列

来自分类Dev

基于其他列将列中的值相乘

来自分类Dev

基于R中其他列的列值总和

来自分类Dev

Excel:基于其他列的列中的条件格式值

来自分类Dev

熊猫:如何创建基于其他列值的条件对其他列求和的列?

来自分类Dev

熊猫多指标基于其他列中的值减去

来自分类Dev

添加列-指定名称-基于其他的行值

来自分类Dev

如何基于列值创建其他行或数据框

来自分类Dev

基于其他列值的熊猫条件填充

来自分类Dev

大熊猫基于其他列分配值

来自分类Dev

用基于其他列的值填充np.nan

来自分类Dev

查询以基于其他列获取最接近的匹配值

来自分类Dev

基于其他列值的列上的条件格式

来自分类Dev

基于列值的其他表中的SQL SELECT数据

来自分类Dev

根据其他列的内容汇总列

来自分类Dev

基于其他列条件和其他列计算的数据框新列值

来自分类Dev

根据R中其他列的值对汇总行中的值

来自分类Dev

如何基于其他列值将单列值拆分为多列

来自分类Dev

如何基于两列是否包含其他列中存在的值返回值

来自分类Dev

如何基于其他列中的值求和单个列的值?

来自分类Dev

是否有基于其他列值过滤列值的功能?