【发布时间】:2015-04-14 12:25:52
【问题描述】:
样本数据:
product_type |segment_type |promotion_id |promotion_value
-----------------------------------------------------------
Beer |Regional |1 |20
Beer |National |1 |20
Beer |Regional |2 |20
Beer |National |2 |20
Beer |National |3 |30
Beer |Regional |4 |40
Soda |Regional |5 |50
Soda |National |5 |50
Soda |Regional |6 |50
Soda |National |6 |50
Soda |National |7 |15
Soda |Regional |8 |20
目标:考虑不同的促销活动,获得按 product_type 和 segment_type(立方体)分组的总促销价值。请注意,一次促销可以覆盖一个或两个细分市场(区域和国家)。
期望的结果:
product_type |segment_type |promotion_value
-------------------------------------------------
Beer | |110
Beer |Regional |80
Beer |National |70
Soda | |135
Soda |Regional |120
Soda |National |115
我目前的SQL如下:
SELECT product_Type,
segment_type,
sum(promotion_value)promotion_value
from sample_data
group by product_type,
cube(segment_type)
目前的结果是:
product_type |segment_type |promotion_value
-------------------------------------------------
Beer | |150
Beer |Regional |80
Beer |National |70
Soda | |235
Soda |Regional |120
Soda |National |115
SQLFiddle:link
有没有办法达到预期的效果?
【问题讨论】:
-
区域和国家不应该加起来有什么具体原因吗?
-
@mucio:一次促销可以同时到达区域和国家细分市场,目标是通过不同的促销获得促销价值。
标签: sql oracle group-by distinct cube