楼主: ilovejosh
1466 2

[学习分享] SAS Advance第15题,sas sql group by语句 [推广有奖]

  • 0关注
  • 2粉丝

本科生

5%

还不是VIP/贵宾

-

威望
0
论坛币
174 个
通用积分
2.6100
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
394 点
帖子
38
精华
0
在线时间
83 小时
注册时间
2011-6-7
最后登录
2022-11-4

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
请问下面这两个区别在哪里? 谢谢。


proc sql;
select rep, max(cost)
from work.one
group by rep;
quit;


proc sql;
select o.rep, (select max(cost) from work.one as i where i.rep=o.rep)
from work.one as o
group by rep;
quit;



二维码

扫码加我 拉你入群

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

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

关键词:ADVANCE Group VANCE advan ance

沙发
luekemia 发表于 2019-3-21 13:57:09 |只看作者 |坛友微信交流群
猜代码的原意思是:第二个代码想把work.one里面的汇总按照o数据里面出现的rep进行读取。
如果上面的猜测是对的,那么代码的写法是有问题的。
按照程序逻辑我补上了完整的带结果的代码:

data one;

rep='A';cost=1;output;

rep='A';cost=10;output;

rep='B';cost=3;output;

rep='A';cost=5;output;

run;



data o;

rep='B';output;

run;


proc sql;

create table test1 as

select rep, max(cost)

from work.one

group by rep;

quit;



proc sql;

create table test2 as

select o.rep, (select max(cost) from work.one as i where i.rep=o.rep)

from work.one as o

group by rep;

quit;




如果希望按照o里面的rep统计work.one的结果:

proc sql;

create table test3 as

select rep, max(cost)

from work.one

where rep in (select rep from work.o)

group by rep;

quit;



使用道具

藤椅
ilovejosh 发表于 2019-3-23 16:52:36 |只看作者 |坛友微信交流群
谢谢回复,感谢

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 20:25