上节我们讲了PROC SQL的基本结构,以及一些sql命令的使用,这节我们主要讲一下case...when...、order by 、group by 、update、delete语句以及如何用proc sql生成宏变量。
示例1:有条件地赋值——case...when
Proc步中的 case...when... 相当于data步中的 if...then... 根据某种条件输出最终结果。
结果如下:
示例2:对数据进行排序——order by
(1)默认按升序排列
结果如下:
(2)按降序排列
结果如下:
示例3:检索满足条件的行——where
**当我们想要选择表中的某些观测时,可以使用where**来选择符合特殊条件的观测。
结果如下:
示例4:对数据进行分组——group by
GROUP BY子句使SELECT语句的结果按子句中列出的一个或多个变量的每次不同出现进行汇总或汇总。只有在SELECT或HAVING子句中包含一个或多个汇总函数(SUM、AVG、MIN、MAX)时,GROUP BY子句才会添加到SELECT语句中。
(1)用group by进行分组
结果如下:
(2)Having指定条件
说到指定条件,我们最新想到的往往是where子句,但是where子句只能指定行的条件,而不能指定组的条件,因此便有了Having子句,它用来指定组的条件,我们来看个示例:
我们想要了解平均体重大于100的是男性还是女性
结果如下:
示例5:子查询
查询语句中包含查询语句,执行时先执行子查询,后执行外部查询,根据包含子查询的子句,子查询可以返回一个值或多个值。
结果如下:
示例6:更新SAS表——Update
我们可以使用**SQL Update**语句更新SAS表。下面我们首先创建一个名为class的新表,然后使用SQL Update语句去更新它。
结果如下:
示例7:删除操作——Delete
**SQL**中的删除操作涉及使用**SQL DELETE**语句从表中删除某些值.我们可以继续使用示例中的数据,并从表中删除age大于等于13的观测。
结果如下:
示例8:创建宏变量——INTO
给宏变量赋值,**Data**步和**Proc**步都能实现,不过从操作灵活性上讲,**Proc**步要更胜一筹。**Proc**步生成宏变量就需要用到**INTO**子句,下面来具体介绍一下**INTO**子句如何使用。
(1)指定一个宏变量
结果如下:
(2)指定多个宏变量
结果如下:
(3)指定一个宏变量来保存一列的所有值
结果如下:
-
SQL
+关注
关注
1文章
753浏览量
44012 -
SAS
+关注
关注
2文章
521浏览量
32816 -
avg
+关注
关注
0文章
11浏览量
4094
发布评论请先 登录
相关推荐
评论