sas-sql

本文介绍了如何使用SAS SQL解决统计每组最大值的问题,通过实例展示了子查询的运用,并提供了查询数据表所有字段名的方法。作者强调了学习过程中的耐心与积累。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、目标:数据共有81行观测,需要统计出每组make下cou最大的值:
在这里插入图片描述

data test.a(keep=make drivetrain);
set sashelp.cars;

proc print data=a;
run;

proc sql;
create table test.b as 
select * from
(select make,drivetrain,count(*) as cou from test.a group by make,drivetrain)
quit;
run;
proc sql;
create table c as
select * from b t
where exists (select count(*) from b as b1 where b1.cou >= t.cou and b1.make = t.make group by b1.make 
having count(*)<=1);
quit;

在这里插入图片描述
开始运行的结果和运行结果不一致,后来以为是逻辑库的问题,因为换了逻辑库就好了(起初用的是work逻辑库),最后检验,发现是要给每个表都起别名,就OK了。

像蜗牛一样慢慢来吧,算然进步很慢但是今天比昨天的自己多知道一点点就好。

二、子查询:找出大于平均的观测:

proc sql;
select make,type,mpg_city,avg(mpg_city) as avg_mpg,weight,avg(weight) as avg_weight from test.d
having mpg_city > select avg_mpg and weight > avg_weight;
quit;

等价写法:

proc sql;
select make,type,mpg_city,weight from test.d
having mpg_city > (select avg(mpg_city) from test.d) and weight > (select avg(weight) from test.d);
quit;

三、查询数据表的所有字段名

proc contents data=sashelp.cars out=o1(keep=name label);
run;

四、参考资料
https://www.sohu.com/a/130832971_278472

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值