我想数:
- 所有count_productsstore_A
- 包括所有store_id的总count_products甚至store_A为total_count_products
Main_table
date store_id count_prroducts
2019-01-01 A 13
2019-01-01 B 34
2019-01-01 C 63
2019-01-01 D 10
Output_table
date store_A_count_products total_count_products
2019-01-0 13 120
首先选择日期列,不做任何修改。
对于store_A_count_products,基本上你需要做的是在store_id为 A 时将所有count_products相加。您可以使用案例语句执行此操作:
case when store_id = 'A' then count_products else 0 end
这基本上是 IF/ELSE 情况,对于store_id列中没有 A 的任何行,将返回 0。
如果将其包装在 SUM(( 中,则将所有行相加。
对于total_count_products,您只需要在count_products周围包装一个 SUM((。这将对所有行相加,而不考虑任何其他列的状态。
最后,您需要按日期列分组。分组依据是一种将聚合数据拆分到未聚合列的方法。
这样做的原因是因为它为每个日期提供了一行,商店 A 的产品总和和所有产品的总和。
Select
date,
Sum(case when store_id = 'A' then count_products else 0 end) as store_A_count_products,
SUM(count_products) as total_count_products
From main_table
Group by date;