zoukankan      html  css  js  c++  java
  • SAS 中的 sql 语句的使用------单表操作

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

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

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

    2. SAS 中 sql 的增和查

    一般的样式为:

    1 proc sql;
    2     here is your sql;
    3 run;

      (1)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 select 
    12     *
    13 from
    14     work.temp;
    15 run;

    结果为:

      (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 /* 创建表 */
    11 proc sql;
    12 create table visit as
    13 select
    14     visit
    15 from
    16     work.temp;
    17 run;
    18 
    19 /* 打印创建的表 */
    20 proc print data=visit;
    21 run;

    结果为:

      (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 /* 创建表,含条件语句 */
    11 proc sql;
    12 create table visit as
    13 select
    14     *
    15 from
    16     work.temp
    17 where
    18     visit = "v1";
    19 run;
    20 
    21 /* 打印创建的表 */
    22 proc print data=visit;
    23 run;

    结果为:

      (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 /* 创建表,含分组语句 */
    14 proc sql;
    15 create table visit as
    16 select
    17     *
    18 from
    19     work.temp
    20 group by
    21     visit;
    22 run;
    23 
    24 /* 打印创建的表 */
    25 proc print data=visit;
    26 run;

    结果为:

    注意:

    分组查询和按条件查询的区别:

    按条件查询是根据条件,查询想要得到的结果;

    分组查询的结果是所有数据,但是按照条件分组的。

      (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 /* 创建表,分类语句+条件语句 */
    14 proc sql;
    15 create table visit as
    16 select
    17     *
    18 from
    19     work.temp
    20 group by
    21     visit
    22 having 
    23     age>25;
    24 run;
    25 
    26 /* 打印创建的表 */
    27 proc print data=visit;
    28 run;

    结果为:

      (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 /* 创建表,排序语句 */
    14 proc sql;
    15 create table visit as
    16 select
    17     *
    18 from
    19     work.temp
    20 order by
    21     age;
    22 run;
    23 
    24 /* 打印创建的表 */
    25 proc print data=visit;
    26 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 /* 创建表,含排序语句 */
    14 proc sql;
    15 create table visit as
    16 select
    17     *
    18 from
    19     work.temp
    20 order by
    21     type;
    22 run;
    23 
    24 /* 打印创建的表 */
    25 proc print data=visit;
    26 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 /* 创建表,区别对待 */
    14 proc sql;
    15 create table visit as
    16 select
    17     visit,visit_dat,
    18     case when age>50 then "高龄"
    19          when age>25 & age<=50 then "适合"
    20          else "低龄"
    21     end
    22     as age_span,type
    23 from
    24     work.temp;
    25 run;
    26 
    27 /* 打印创建的表 */
    28 proc print data=visit;
    29 run;

    结果:

     注意:

    在写sql语句的时候,每次写完一条 sql 语句必须跟上一个分号(;)。

  • 相关阅读:
    Unity3D技术之从 Cinema 4D 中导入对象浅析
    Unity3D技术之从 Maya 中导入对象浅析
    如何在Unity中实现文字的渐隐效果?
    在Unity中如何实现重复循环效果?
    如何在Unity中显示当前游戏运行帧数?
    Unity3D技术之资源数据库 (AssetDatabase)详解
    PaaS和SaaS的区别是什么?
    数据库链接失败错误ERROR com.alibaba.druid.pool.DruidDataSource
    WampServer3.0服务器端开启ssl认证后重启Apache失败,解决办法
    在SublimeText3中想使用快捷键调出插件ColorPicker不起作用办法解决
  • 原文地址:https://www.cnblogs.com/elkan/p/11121321.html
Copyright © 2011-2022 走看看