繁体   English   中英

如何根据其他列值对某一列求和

[英]How to sum a certain column based on other columns values

我有一个包含多个 work_weeks、product_names 和 event_names 的表。 下面是一个例子:

work_week     product_name  event_name         num_products         attributeA      attributeB
 2021-17         A            Event1               25                  Y                X         
 2021-17         A            Event1               20                  Y                Z
 2021-17         A            Event1               15                  N                Y

我正在尝试在此表上执行“分组依据”,因此我可以获得按 work_week、product_name 和 event_name 分组的 num_products 的总和。 但是,在我的 'group by' 表中,我需要 sum(num_products) 的多个版本,具体取决于 attributeA 和 attributeB 的值。 像这样的东西:

work_week     product_name  event_name     sum_when_A = N     sum_when_A = Y and B = Z
  2021-17         A            Event1           15                      20                       

关于如何执行此操作的任何想法?

只需使用条件聚合:

select work_week, product_name, event_name,
       sum(case when attributeA = 'N' then num_products else 0 end) as sum_n,
       sum(case when attributeA = 'Y' and attributeB = 'Z' then num_products else 0 end) as num_yz
from t
group by work_week, product_name, event_name;

使用条件聚合

select work_week, product_name, event_name
, sum(iif(attributeA = 'N', num_products, 0))
, sum(iif(attributeA = 'Y' and attributeB = 'Z', num_products, 0))
from myTable
group by work_week, product_name, event_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM