基于存储区和所有存储区的计数

oymdgrw7  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(248)

我想数数:
商店的所有产品
total count\u products包含所有store\u id的偶数store\u a作为total\u count\u products
主表

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

输出表

date          store_A_count_products    total_count_products
2019-01-0     13                        120
mctunoxg

mctunoxg1#

首先选择日期列,不做任何修改。
对于store\u a\u count\u产品,基本上只要store\u id为a,您就需要将所有count\u产品相加。您可以使用case语句来执行此操作:

case when store_id = 'A' then count_products else 0 end

这基本上是if/else情况,对于store\u id列中没有的任何行,都将返回0。
如果将其 Package 为sum(),则将所有行相加。
对于total\u count\u乘积,您只需要在count\u乘积周围 Package 一个sum()。这将累加所有行,而不考虑任何其他列的状态。
最后,您需要按日期列进行分组。groupby是一种将聚合数据拆分为未聚合列的方法。
之所以这样做是因为它为每个日期提供一行,即商店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;

相关问题