全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7104 7
2011-10-28
例如:
A B
1 1
2 3
3 6
4 10
...

在上面的例子中,希望由A产生B。
在SAS语句中,可以通过B + A实现。
但如果使用PROC SQL语句呢?(我搜索百度发现其它SQL有over语句,但SAS中好像没有。)

请高手指教,非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-10-28 16:36:08
用retain就可以做了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-28 18:46:52
data a;
   input a;
cards;
1
2
3
4
;
run;

proc sql;
       create table b as
       select a.a, sum(b.a) as b
       from   a as a, a as b
       where  a.a>=b.a
       group by a.a
       ;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-28 20:13:27
oloolo 发表于 2011-10-28 18:46
data a;
   input a;
cards;
this is not a general solution. what if the series not sorted ascendingly?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-28 22:13:17
oloolo 发表于 2011-10-28 18:46
data a;
   input a;
cards;
模仿以下,既然位置更重要(but my code looks very stupid because of the funny sql function)。
京剧

复制代码

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-10-29 11:03:27
oloolo 发表于 2011-10-28 18:46
data a;
   input a;
cards;
SQL will be a clumsy approach for solving this problem. There is no observation order concept in database or SQL language. For example, find the third largest value of a variable.  

The proposed solution would be wrong in following data ordering,

data a;
   input a;
cards;
1
6
3
4
;
run;

data b;
   set a;
   b+a;
run;

proc print;run;

proc sql;
      
       select a.a, sum(b.a) as b
       from   a as a, a as b
       where  a.a>=b.a
       group by a.a
       ;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群