sql - 计算 SAS 中的列累积总和和百分比
问题描述
在将查询创建为 SAS proc SQL 时,我需要一些帮助。
考虑以下数据集,该数据集已将来自不同地区的销售额按 3 小时分组(它只是一个子集,实际数据涵盖 24 小时):
Date ObsAtHour Region Sales
1/1/2018 2 Asia 76
1/1/2018 2 Africa 5
1/1/2018 5 Asia 14
1/1/2018 5 Africa 10
2/1/2018 2 Asia 40
2/1/2018 2 Africa 1
2/1/2018 5 Asia 15
2/1/2018 5 Africa 20
我得到了过去 45 天的数据..
我正在尝试做两件事
1)按日期、ObsAtHour 和 Region 分组并获得 Sales 的累积总和,这样我就得到了类似的东西
Date ObsAtHour Region Sales CumSales
1/1/2018 2 Asia 76 76
1/1/2018 2 Africa 5 5
1/1/2018 5 Asia 14 90
1/1/2018 5 Africa 10 15
2/1/2018 2 Asia 40 40
2/1/2018 2 Africa 1 1
2/1/2018 5 Asia 15 55
2/1/2018 5 Africa 20 21
2) 获取销售百分比,该百分比表明每个区域在任何 obsAtHour 已实现的每日销售百分比。它看起来像:
Date ObsAtHour Region Sales CumSales Pct
1/1/2018 2 Asia 76 76 84%
1/1/2018 2 Africa 5 5 33%
1/1/2018 5 Asia 14 90 100%
1/1/2018 5 Africa 10 15 100%
2/1/2018 2 Asia 40 40 72%
2/1/2018 2 Africa 1 1 4.76%
2/1/2018 5 Asia 15 55 100%
2/1/2018 5 Africa 20 21 100%
您的帮助将不胜感激。
解决方案
像下面的东西
data have;
input Date:mmddyy10. ObsAtHour Region $ Sales;
format date mmddyy10;
datalines;
1/1/2018 2 Asia 76
1/1/2018 2 Africa 5
1/1/2018 5 Asia 14
1/1/2018 5 Africa 10
2/1/2018 2 Asia 40
2/1/2018 2 Africa 1
2/1/2018 5 Asia 15
2/1/2018 5 Africa 20
;
proc sort data=have;
by date region;
run;
/* this gives moving sum*/
data have1;
format date mmddyy10.;
set have;
by date region;
if first.region then sumsales = sales;
else sumsales+sales;
run;
/* get the total sales from your intial table by group and join it back
and calculate the percent*/
proc sql;
select a.*, sumsales/tot_sales as per format =percent10.2 from
(select * from have1)a
inner join
(select region , date, sum(sales) as tot_sales
from have
group by 1, 2)b
on a.region =b.region
and a.date =b.date;
推荐阅读
- javascript - 为什么我必须调用() push() JS 函数并重新设置它以获得预期的结果?
- c - 在两个运行 TUN/TAP 的设备之间交换消息
- python - pipenv install django 无需每次都重新下载?
- excel - 搜索要复制和粘贴的范围内的最后信息
- java - 使用 map 和 filter 函数从存在于树形图中的集合中删除元素(Java 集合)
- html - 如何在悬停时水平拉伸我的图像而不是垂直拉伸?
- java - android应用程序概览时如何更改活动/视图
- node.js - 如何使用 Node 在 Raspberry Pi 3 上读取 Wiegand?
- javascript - 如何为渲染函数动态设置变量状态
- qt - 小部件边距与布局边距