设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1714|回复: 0

SAS 中的 sql 语句的使用------单表操作

[复制链接]

8

主题

97

金钱

143

积分

入门用户

发表于 2019-9-4 15:53:32 | 显示全部楼层 |阅读模式

1. 在 SAS 中使用 sql 语句,使得对于数据的操作会更加地方便。

  (1)sql 语句分为增、删、改、查,就是基本数据的操作

  (2)SAS 中的 sql 一般只使用增、查。

2. SAS 中 sql 的增和查

一般的样式为:
  1. 1 proc sql;
  2. 2     here is your sql;
  3. 3 run;
复制代码


(1)SAS 中 sql 的查询
  1. 1 data temp;
  2. 2 input visit $ visit_dat $;
  3. 3 cards;
  4. 4 v1 20190201
  5. 5 v2 20200304
  6. 6 v3 20190825
  7. 7 ;
  8. 8 run;
  9. 9
  10. 10 proc sql;
  11. 11 select
  12. 12     *
  13. 13 from
  14. 14     work.temp;
  15. 15 run;
复制代码

结果为:
1.png

(2)SAS 中 sql 的增加
  1. data temp;
  2. input visit $ visit_dat $;
  3. cards;
  4. v1 20190201
  5. v2 20200304
  6. v3 20190825
  7. ;
  8. run;

  9. /* 创建表 */
  10. proc sql;
  11. create table visit as
  12. select
  13.     visit
  14. from
  15.     work.temp;
  16. run;

  17. /* 打印创建的表 */
  18. proc print data=visit;
  19. run;
复制代码


结果为:
2.png

(3)SAS 中 sql 语句的条件查询
  1. data temp;
  2. input visit $ visit_dat $;
  3. cards;
  4. v1 20190201
  5. v2 20200304
  6. v3 20190825
  7. ;
  8. run;

  9. /* 创建表,含条件语句 */
  10. proc sql;
  11. create table visit as
  12. select
  13.     *
  14. from
  15.     work.temp
  16. where
  17.     visit = "v1";
  18. run;

  19. /* 打印创建的表 */
  20. proc print data=visit;
  21. run;
复制代码

结果为:
3.png

(4)SAS 中 sql 的分组查询
  1. data temp;
  2. input visit $ visit_dat $;
  3. cards;
  4. v1 20190201
  5. v2 20200304
  6. v3 20190825
  7. v1 20180431
  8. v2 20170902
  9. v4 20160826
  10. ;
  11. run;

  12. /* 创建表,含分组语句 */
  13. proc sql;
  14. create table visit as
  15. select
  16.     *
  17. from
  18.     work.temp
  19. group by
  20.     visit;
  21. run;

  22. /* 打印创建的表 */
  23. proc print data=visit;
  24. run;
复制代码


结果为:
4.png
注意:
分组查询和按条件查询的区别:
按条件查询是根据条件,查询想要得到的结果;
分组查询的结果是所有数据,但是按照条件分组的。

(5)SAS 中 sql 分组后,按照条件查询,使用 having 来添加条件
  1. data temp;
  2. input visit $ visit_dat $ age;
  3. cards;
  4. v1 20190201 18
  5. v2 20200304 21
  6. v3 20190825 34
  7. v1 20180431 58
  8. v2 20170902 23
  9. v4 20160826 25
  10. ;
  11. run;

  12. /* 创建表,分类语句+条件语句 */
  13. proc sql;
  14. create table visit as
  15. select
  16.     *
  17. from
  18.     work.temp
  19. group by
  20.     visit
  21. having
  22.     age>25;
  23. run;

  24. /* 打印创建的表 */
  25. proc print data=visit;
  26. run;
复制代码


结果为:
5.png

(6)SAS 中 sql 语句的排序,使用 order by,若是要排序的字段是字符型,则按照首字母的顺序
数字的排序
  1. data temp;
  2. input visit $ visit_dat $ age;
  3. cards;
  4. v1 20190201 18
  5. v2 20200304 21
  6. v3 20190825 34
  7. v1 20180431 58
  8. v2 20170902 23
  9. v4 20160826 25
  10. ;
  11. run;

  12. /* 创建表,排序语句 */
  13. proc sql;
  14. create table visit as
  15. select
  16.     *
  17. from
  18.     work.temp
  19. order by
  20.     age;
  21. run;

  22. /* 打印创建的表 */
  23. proc print data=visit;
  24. run;
复制代码


字符的排序
  1. data temp;
  2. input visit $ visit_dat $ age type $;
  3. cards;
  4. v1 20190201 18 a
  5. v2 20200304 21 f
  6. v3 20190825 34 e
  7. v1 20180431 58 c
  8. v2 20170902 23 d
  9. v4 20160826 25 r
  10. ;
  11. run;

  12. /* 创建表,含排序语句 */
  13. proc sql;
  14. create table visit as
  15. select
  16.     *
  17. from
  18.     work.temp
  19. order by
  20.     type;
  21. run;

  22. /* 打印创建的表 */
  23. proc print data=visit;
  24. run;
复制代码


(7)SAS 中 sql 语句的 case 使用,使用 case when,这里的case when 只是针对单独的字段来做判断
  1. data temp;
  2. input visit $ visit_dat $ age type $;
  3. cards;
  4. v1 20190201 18 a
  5. v2 20200304 21 f
  6. v3 20190825 34 e
  7. v1 20180431 58 c
  8. v2 20170902 23 d
  9. v4 20160826 25 r
  10. ;
  11. run;

  12. /* 创建表,区别对待 */
  13. proc sql;
  14. create table visit as
  15. select
  16.     visit,visit_dat,
  17.     case when age>50 then "高龄"
  18.          when age>25 & age<=50 then "适合"
  19.          else "低龄"
  20.     end
  21.     as age_span,type
  22. from
  23.     work.temp;
  24. run;

  25. /* 打印创建的表 */
  26. proc print data=visit;
  27. run;
复制代码


结果:
6.png

注意:
在写sql语句的时候,每次写完一条 sql 语句必须跟上一个分号(;)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表