首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SUMIF、Group by、Aggregate by

SUMIF、Group by、Aggregate by
EN

Stack Overflow用户
提问于 2019-09-17 01:13:46
回答 1查看 131关注 0票数 1

我需要添加一个列来显示基于业务线和季度的收入总和,同时保持原始数据不变。步骤2是通过将原始收入行除以收入计算权重之和来计算收入百分比。

在excel中我可以很容易地做到这一点,但在SQL中就搞不懂了。感谢你的帮助。

因此,在我的数据中,我有1000行。列包括业务线(如渠道与跨国公司)、季度(如Q319和Q419)、收入、单位和部件号。

我尝试使用group by函数对其求和,但不起作用。

代码语言:javascript
复制
SELECT 
   FF.Quarter,
   FF.CHANNEL,
   FF.Units,
   FF.Material,
   FF.Revenue,

   SUM (Case When FF.Channel = '02' and FF.Quarter = '2019Q3' then FF.Revenue when FF.Channel = '01' and FF.Quarter = '2019Q3' then FF.Revenue Else 1 End) as Revenue_SUM

   FROM dbo.[Flat File] as FF
   Group by FF.Quarter, FF.Channel, FF.Units, FF.Revenue, FF.Material

期望是创建一个列,该列计算每行的%权重为%(收入除以收入总和)。

下面是数据表和预期结果。我想要编写一个保留原始数据的查询,并在其旁边添加两列。

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 01:19:38

如果我没理解错的话,你想要一个窗口函数:

代码语言:javascript
复制
SELECT FF.Quarter, FF.CHANNEL, FF.Units, FF.Material, FF.Revenue,
       SUM(FF.Revenue) OVER (PARTITION BY FF.Channel, FF.Quarter) as Revenue_SUM
FROM dbo.[Flat File] as FF;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57961543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档