SAS中的SQL语句完全教程之一

合集下载

sas sql count 条件

sas sql count 条件

sas sql count 条件SAS和SQL是两种常用的数据分析工具,它们可以帮助我们对大量的数据进行处理和分析。

在使用这两种工具时,我们经常会用到count 函数和条件语句,下面就来详细介绍一下这些内容。

首先,count函数是用来统计数据中某个字段的数量的。

在SAS中,我们可以使用proc sql语句来进行统计。

例如,我们要统计某个表中某个字段的数量,可以使用以下语句:proc sql;select count(字段名) from 表名;quit;在SQL中,我们可以使用select语句来进行统计。

例如,我们要统计某个表中某个字段的数量,可以使用以下语句:select count(字段名) from 表名;其次,条件语句是用来筛选数据的。

在SAS中,我们可以使用where 语句来进行筛选。

例如,我们要筛选某个表中某个字段的值等于某个特定值的数据,可以使用以下语句:proc sql;select * from 表名 where 字段名=特定值;quit;在SQL中,我们可以使用where语句来进行筛选。

例如,我们要筛选某个表中某个字段的值等于某个特定值的数据,可以使用以下语句:select * from 表名 where 字段名=特定值;最后,我们可以将count函数和条件语句结合起来使用。

例如,我们要统计某个表中某个字段的值等于某个特定值的数据的数量,可以使用以下语句:proc sql;select count(字段名) from 表名 where 字段名=特定值;quit;select count(字段名) from 表名 where 字段名=特定值;总之,count函数和条件语句是SAS和SQL中非常常用的功能,它们可以帮助我们更加方便地进行数据分析和处理。

在使用这些功能时,我们需要注意语法的正确性和逻辑的合理性,以确保我们得到的结果是准确的。

SAS中用到的SQL语法及结构

SAS中用到的SQL语法及结构

SAS中用到的SQL语法及结构在SAS中使用SQL语言,可以对数据进行查询、插入、更新和删除等操作。

以下是SAS中常用的SQL语法及结构的详细介绍。

1.SELECT语句:用于查询数据表中的数据。

SELECT column1, column2, ...FROM table_nameWHERE condition;示例:SELECT*FROM employeesWHERE department = 'HR';2.INSERTINTO语句:用于向数据表中插入新的记录。

INSERT INTO table_name (column1, column2, ...)VALUES (value1, value2, ...);示例:INSERT INTO employees (name, age, department)VALUES ('John Smith', 35, 'Finance');3.UPDATE语句:用于更新数据表中的记录。

UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;示例:UPDATE employeesSET department = 'IT'WHERE name = 'John Smith';4.DELETE语句:用于从数据表中删除记录。

DELETE FROM table_nameWHERE condition;示例:DELETE FROM employeesWHERE age > 50;5.DISTINCT关键字:用于查询唯一的记录。

SELECT DISTINCT column1, column2, ...FROM table_nameWHERE condition;示例:SELECT DISTINCT departmentFROM employees;6.ORDERBY关键字:用于对查询结果进行排序。

SAS中的SQL语句大全

SAS中的SQL语句大全

S A S中的S Q L语句大全 This model paper was revised by the Standardization Office on December 10, 2020SAS中的SQL语句完全教程之一:SQL简介与基本查询功能本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。

1 SQL过程步介绍SQL过程步可以实现下列功能:查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。

注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。

SQL过程步的特征SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL 过程步SQL过程步语句SELECT:查询数据表中的数据ALTER:增加、删除或修改数据表的列CREATE:创建一个数据表DELETE:删除数据表中的列DESCRIBE:列出数据表的属性DROP:删除数据表、视图或索引INSERT:对数据表插入数据RESET:没用过,不知道什么意思SELECT:选择列进行打印UPDATE:对已存在的数据集的列的值进行修改2 SQL基本查询功能SELECT语句基本语法介绍SELECT <DISTINCT> object-item <, ...object-item> FROM from-list<WHERE sql-expression><GROUP BY group-by-item <, ... group-by-item>> <HAVING sql-expression><ORDER BY order-by-item <, ... order-by-item>>;这里SELECT:指定被选择的列FROM:指定被查询的表名WHERE:子数据集的条件GROUP BY:将数据集通过group进行分类HAVING:根据GROUP BY的变量得到数据子集ORDER BY:对数据集进行排序SELECT语句的特征选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32个表。

sas sql中 常用函数

sas sql中 常用函数

sas sql中常用函数SAS SQL中常用函数在SAS中,SQL是一种用于管理和操作关系数据库的语言。

通过使用SAS SQL,可以对数据进行查询、筛选、排序、汇总等操作,以便更好地理解数据以及满足需求。

在SAS SQL中,函数是非常重要的一部分,它们可以对数据进行处理,提取有用信息,并进行计算和转换。

本文将介绍SAS SQL中常用函数,并逐步进行详细讲解。

1. COUNT函数:COUNT函数用于统计某个列中非空值的个数。

语法如下:COUNT(column_name)其中,column_name表示要进行统计的列名。

COUNT函数返回一个表示计数结果的整数值。

2. SUM函数:SUM函数用于计算某个列的数值总和。

语法如下:SUM(column_name)其中,column_name表示要进行计算的列名。

SUM函数返回一个表示总和结果的数值。

3. AVG函数:AVG函数用于计算某个列的数值平均值。

语法如下:AVG(column_name)其中,column_name表示要进行计算的列名。

AVG函数返回一个表示平均值结果的数值。

4. MAX函数:MAX函数用于找出某个列中的最大值。

语法如下:MAX(column_name)其中,column_name表示要进行查找的列名。

MAX函数返回一个表示最大值结果的数值。

5. MIN函数:MIN函数用于找出某个列中的最小值。

语法如下:MIN(column_name)其中,column_name表示要进行查找的列名。

MIN函数返回一个表示最小值结果的数值。

6. CONCAT函数:CONCAT函数用于将多个字符串连接在一起。

语法如下:CONCAT(string1, string2, ...)其中,string1、string2等参数表示要进行连接的字符串。

CONCAT函数返回一个表示连接结果的字符串。

7. SUBSTRING函数:SUBSTRING函数用于提取某个字符串的部分内容。

sql中as用法 -回复

sql中as用法 -回复

sql中as用法-回复SQL中的AS用法在SQL语言中,AS是一个非常常见且重要的关键词。

它在查询过程中起着举足轻重的作用,用于为查询结果中的列或表达式指定别名。

本文将详细介绍AS的用法,并逐步回答相关问题。

一、AS的基本用法在SQL中,AS的基本用法是通过在查询语句中使用AS关键词来为列或表达式指定别名。

通过指定别名,可以让查询结果更加易读且易于理解。

下面是一个简单的示例:SELECT column_name AS alias_name FROM table_name;在上述示例中,column_name是要查询的列名,alias_name是为该列指定的别名。

使用AS关键词可以让我们在查询结果中看到alias_name 而不是column_name。

二、为列指定别名为列指定别名是AS的常见用法之一。

它可以通过以下几种方式实现:1.使用基本别名使用基本别名是最常见的方式之一,它仅仅是为列名指定一个新的名字。

下面是一个示例:SELECT first_name AS name FROM employees;在上述示例中,将查询employees表中的first_name列,并将其指定为name列的别名。

在查询结果中,我们将看到name列而不是first_name列。

2.使用多个列的别名有时候,我们希望将多个列合并在一起并为该组合指定一个别名。

这可以通过使用表达式和AS关键词来实现。

下面是一个示例:SELECT first_name ' ' last_name AS full_name FROM employees;在上述示例中,使用运算符将first_name、空格和last_name三个列连接在一起,并将该组合指定为full_name列的别名。

在查询结果中,我们将看到full_name列,它包含了员工的完整姓名。

三、为表达式指定别名除了为列指定别名外,我们还可以为表达式指定别名。

表达式可以是一种组合并计算列或常量的方式,以生成一个新的结果列。

应用SAS中的SQL语句进行数据合并 (1)

应用SAS中的SQL语句进行数据合并 (1)

应用SAS中的SQL语句进行数据合并1 连接joins分为内连接inner joins和外连接outer joins内连接:仅返回匹配的数据,最多可以有32个表同时进行内连接外连接:返回所有匹配的数据和非匹配的数据,一次只能有两个表或视图进行外连接迪卡尔积:返回表内所有可能的匹配情况。

例如表A有10*20的数据,表B有30*40的数据,则两个表的迪卡尔积有(10+30)*(20+40)=40*60的数据我们先建立两个数据集:data march;input flight $3. +5 date date7. +3 depart time5. +2 orig $3.+3 dest $3. +7 miles +6 boarded +6 capacity;format date date7. depart time5.;informat date date7. depart time5.;cards;219 01MAR94 9:31 LGA LON 3442 198 250622 01MAR94 12:19 LGA FRA 3857 207 250132 01MAR94 15:35 LGA YYZ 366 115 178271 01MAR94 13:17 LGA PAR 3635 138 250302 01MAR94 20:22 LGA WAS 229 105 180114 02MAR94 7:10 LGA LAX 2475 119 210202 02MAR94 10:43 LGA ORD 740 120 210219 02MAR94 9:31 LGA LON 3442 147 250132 02MAR94 15:35 LGA YYZ 366 106 178202 03MAR94 10:43 LGA ORD 740 118 210219 03MAR94 9:31 LGA LON 3442 197 250622 03MAR94 12:19 LGA FRA 3857 180 250271 03MAR94 13:17 LGA PAR 3635 147 250202 04MAR94 10:43 LGA ORD 740 148 210219 04MAR94 9:31 LGA LON 3442 232 250622 04MAR94 12:19 LGA FRA 3857 137 250132 04MAR94 15:35 LGA YYZ 366 117 178271 04MAR94 13:17 LGA PAR 3635 146 250302 04MAR94 20:22 LGA WAS 229 115 180114 05MAR94 7:10 LGA LAX 2475 117 210202 05MAR94 10:43 LGA ORD 740 104 210219 05MAR94 9:31 LGA LON 3442 160 250622 05MAR94 12:19 LGA FRA 3857 185 250132 05MAR94 15:35 LGA YYZ 366 157 178271 05MAR94 13:17 LGA PAR 3635 177 250114 06MAR94 7:10 LGA LAX 2475 128 210202 06MAR94 10:43 LGA ORD 740 115 210219 06MAR94 9:31 LGA LON 3442 163 250132 06MAR94 15:35 LGA YYZ 366 150 178302 06MAR94 20:22 LGA WAS 229 66 180114 07MAR94 7:10 LGA LAX 2475 160 210132 07MAR94 15:35 LGA YYZ 366 164 178271 07MAR94 13:17 LGA PAR 3635 155 250302 07MAR94 20:22 LGA WAS 229 135 180;run;data delay;input flight $3. +5 date date7. +2 orig $3. +3 dest $3. +3delaycat $15. +2 destype $15. +8 delay;informat date date7.;format date date7.;cards;114 01MAR94 LGA LAX 1-10 Minutes Domestic 8 202 01MAR94 LGA ORD No Delay Domestic -5 622 01MAR94 LGA FRA No Delay International -5 132 01MAR94 LGA YYZ 11+ Minutes International 14 302 01MAR94 LGA WAS No Delay Domestic -2 114 02MAR94 LGA LAX No Delay Domestic 0 202 02MAR94 LGA ORD 1-10 Minutes Domestic 5 219 02MAR94 LGA LON 11+ Minutes International 18 622 02MAR94 LGA FRA No Delay International 0 132 02MAR94 LGA YYZ 1-10 Minutes International 5 271 02MAR94 LGA PAR 1-10 Minutes International 4 302 02MAR94 LGA WAS No Delay Domestic 0 114 03MAR94 LGA LAX No Delay Domestic -1 202 03MAR94 LGA ORD No Delay Domestic -1 219 03MAR94 LGA LON 1-10 Minutes International 4 622 03MAR94 LGA FRA No Delay International -2 132 03MAR94 LGA YYZ 1-10 Minutes International 6 271 03MAR94 LGA PAR 1-10 Minutes International 2 302 03MAR94 LGA WAS 1-10 Minutes Domestic 5 114 05MAR94 LGA LAX No Delay Domestic -2 202 06MAR94 LGA ORD No Delay Domestic -3 219 06MAR94 LGA LON 11+ Minutes International 27 132 06MAR94 LGA YYZ 1-10 Minutes International 7 302 06MAR94 LGA WAS 1-10 Minutes Domestic 1 622 07MAR94 LGA FRA 11+ Minutes International 21 132 07MAR94 LGA YYZ No Delay International -2 271 07MAR94 LGA PAR 1-10 Minutes International 4 302 07MAR94 LGA WAS No Delay Domestic 0 ;run;1.1 内连接proc sql;create table innerjoins asselect a.*,b.*from March a,Delay bwhere a.flight=b.flight and a.date=b.date;quit;1.2 外连接1.2.1 左连接left joinproc sql;create table leftjoins asselect *from March aleft join Delay bon a.flight=b.flight and a.date=b.date;quit;1.2.2 右连接right joinproc sql;create table rightjoins asselect *from March aright join Delay bon a.flight=b.flight and a.date=b.date;quit;1.2.3 全连接full joinproc sql;create table fulljoins asselect *from March afull join Delay bon a.flight=b.flight and a.date=b.date;quit;1.3 迪卡尔积proc sql;create table cartesian asselect a.*,b.*from March a,Delay b;quit;这里再大概说明一下内外连接的实现的基本原理:首先生成两个数据表的迪卡尔积,然后再根据where语句来选择符合条件的数据作为输出结果。

proc sql的case when的用法

proc sql的case when的用法

proc sql的case when的用法(实用版)目录1.Proc sql 介绍2.Case when 的语法3.Case when 的应用实例4.结论正文【1.Proc sql 介绍】Proc sql 是 SAS(Statistical Analysis System)编程语言中的一种过程,主要用于执行 SQL(结构化查询语言)语句。

在 SAS 中,proc sql 过程允许用户在 SAS 数据集中执行 SQL 查询和操作,以便对数据进行处理和分析。

【2.Case when 的语法】Case when 是 SQL 中的一种条件表达式,主要用于根据特定条件对查询结果进行分组或计算。

其基本语法如下:```CASEWHEN condition1 THEN result1WHEN condition2 THEN result2...ELSE resultNEND```其中,condition1、condition2 等为条件,result1、result2 等为对应的结果。

CASE WHEN 语句会根据给定条件返回相应的结果。

【3.Case when 的应用实例】假设我们有一个名为“salaries”的 SAS 数据集,其中包含员工的工资信息。

现在,我们希望根据员工的部门计算每个部门的平均工资,并输出工资高于 50000 的所有员工。

以下是使用 Case when 的 SQL 语句:```sqlproc sql;select department,case when salary > 50000 then 1 else 0 end as flag from salariesgroup by department;quit;```上述 SQL 语句首先使用 CASE WHEN 语句为每个部门创建一个名为“flag”的新变量,然后根据工资是否高于 50000 计算相应的结果。

最后,根据部门对数据进行分组,并输出每个部门的平均工资和“flag”变量。

sas sql update语句

sas sql update语句

sas sql update语句一、概述在SAS中,SQL是一种强大的查询语言,它可以用于从数据集中检索、更新、插入和删除数据。

在SQL中,UPDATE语句用于修改数据集中的现有记录。

本文将介绍SAS中SQL UPDATE语句的用法和相关注意事项。

二、UPDATE语句的基本语法UPDATE语句的基本语法如下:```UPDATE table_nameSET column1 = value1, column2 = value2, ...WHERE condition;```其中,table_name是要更新的数据集的名称,column1、column2等是要更新的列名,value1、value2等是要更新的值,condition是UPDATE操作的条件。

三、使用UPDATE语句更新数据集在SAS中,我们可以使用SQL UPDATE语句来更新数据集中的记录。

下面通过一个示例来说明UPDATE语句的使用方法。

假设我们有一个名为student的数据集,其中包含学生的尊称、芳龄和成绩。

现在我们需要将某个学生的尊称由“张三”修改为“李四”,芳龄由18修改为20。

可以使用以下UPDATE语句来实现:```sqlUPDATE studentSET 尊称 = '李四', 芳龄 = 20WHERE 尊称 = '张三';```以上UPDATE语句将会在student数据集中将尊称为“张三”的记录更新为尊称“李四”、芳龄为20的记录。

四、UPDATE语句操作注意事项在使用UPDATE语句时,需要注意以下几点:1. 确保更新条件准确无误。

在UPDATE语句中,WHERE子句用于指定更新操作的条件,必须确保条件能够准确地定位到要更新的记录,否则可能会修改错误的数据。

2. 更新前备份数据。

在进行大规模更新操作之前,最好先对要修改的数据进行备份,以防止操作失误导致数据丢失。

3. 注意数据的一致性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SAS中的SQL语句完全教程之一:SQL简介与基本查询功能(2009-04-14 09:10:39)转载分类:SQL标签:sassql查询教育SAS中的SQL语句完全教程之一:SQL简介与基本查询功能本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。

转载请注明出处:/s/blog_5d3b177c0100cksl.html1 SQL过程步介绍1.1 SQL过程步可以实现下列功能:查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。

注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。

1.2 SQL过程步的特征SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程步1.3 SQL过程步语句SELECT:查询数据表中的数据ALTER:增加、删除或修改数据表的列CREATE:创建一个数据表DELETE:删除数据表中的列DESCRIBE:列出数据表的属性DROP:删除数据表、视图或索引INSERT:对数据表插入数据RESET:没用过,不知道什么意思SELECT:选择列进行打印UPDATE:对已存在的数据集的列的值进行修改2 SQL基本查询功能2.1 SELECT语句基本语法介绍SELECT <DISTINCT> object-item <, ...object-item>FROM from-list<WHERE sql-expression><GROUP BY group-by-item <, ... group-by-item>><HAVING sql-expression><ORDER BY order-by-item <, ... order-by-item>>;这里SELECT:指定被选择的列FROM:指定被查询的表名WHERE:子数据集的条件GROUP BY:将数据集通过group进行分类HAVING:根据GROUP BY的变量得到数据子集ORDER BY:对数据集进行排序2.2 SELECT语句的特征选择满足条件的数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32个表。

这里还要提到的就是,在SAS系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符2.3 Validate关键字Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语法、检查列名是否合法、对于不正确的查询将打印其消息。

例:1 proc sql;2 validate3 select Region, Product,Sales4 from sashelp.shoes5 where Region = 'Africa';NOTE: PROC SQL 语句有有效语法。

6 quit;此外,我们还可以用noexec选项也可以用来进行语法测试。

例:7 proc sql noexec;8 select Region, Product,Sales9 from sashelp.shoes10 where Region = 'Africa';NOTE: 由于 NOEXEC 选项,未执行语句。

11 quit;这里提示未执行,未提示错误,说明该语句没有语法错误。

但是如果加入一个sashelp.shoes表里没有字段,这里就会出现错误,例:12 proc sql noexec;13 select Region, Product,Sales,test14 from sashelp.shoes15 where Region = 'Africa';ERROR: 以下这些列在起作用的表中没有找到: test.16 quit;2.4 查询列我们可以像2.3那样查询指定列,也可以用*来查询所有列。

例:proc sql;select *from sashelp.shoes;quit;这里我们可以用feedback选项来查看到底我们选择了哪些列:17 proc sql feedback;18 select *19 from sashelp.shoes;NOTE: Statement transforms to:select SHOES.Region, SHOES.Product, SHOES.Subsidiary, SHOES.Stores, SHOES.Sales, SHOES.Inventory, SHOES.Returnsfrom SASHELP.SHOES;20 quit;这时,我们可以看到从sashelp.shoes表中选择了8个列2.5 消除重复值我们可以用distinct选项来消除重复值。

例如,我们要得到没有重复的所有地区的名称:proc sql;select distinct Regionfrom sashelp.shoesquit;2.6 where子集查询2.6.1 比较运算符先列出where语句用到的比较运算符:LT < 小于GT > 大于EQ = 等于LE <= 小于或等于GE >= 大于或等于NE ^= 不等于例如,我们要查询sales大于100000的所有数据:proc sql;select *from sashelp.shoeswhere sales>100000;quit;2.6.2 in:只要满足in里的任意一个值,表达式即为真,例如,我们要选择Region 在Africa和Eastern Europe的所有数据:proc sql;select *from sashelp.shoeswhere Region in ('Africa','Eastern Europe');quit;2.6.3 逻辑运算符OR | 或AND & 是NOT ^ 非例如,选择Region在Africa和Eastern Europe,且销售额大于100000的所有数据:proc sql;select *from sashelp.shoeswhere Region in ('Africa','Eastern Europe') and sales>100000; quit;2.6.4 CONTAINS或?:判断某列是否包含指定字符串例如,选择列Region包含’Afr’的数据:proc sql;select *from sashelp.shoeswhere Region ? 'Afr';quit;2.6.5 IS NULL或IS MISSING:判断某列数据是否为空例如,如果找出Region为空的数据:proc sql;select *from sashelp.shoeswhere Region is missing;quit;注意,这里我们还可以用以下表达式对where语句进行替换。

如果region为数值型变量,则可以用region=.,如果region为字符型变量,则可以用region= ‘’进行替换。

2.6.6 Between and:选择某一区间的数据例如选择sales大于100000,但小于200000的所有数据:proc sql;select *from sashelp.shoeswhere sales between 100000 and 200000;quit;2.6.7 like:判断是否能匹配某些字符例如,选择以region以A开头的所有地区proc sql;select *from sashelp.shoeswhere Region like 'A%';quit;这里注意有两类通配符,‘%’可以通配任意个任意字符,‘_’只能通配一个任意字符2.6.8 =*:类似匹配这里由于sashelp.shoes里没有符合要求的数据,所有就用书上的例子说明一下吧:Where lastna me=* ‘smith’,出来的结果可能是:smith,smythe等2.7 表达式我们可以通过已有的列进行计算来得到新的列,这时用关键词as来给新的列赋列名,例如:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores from sashelp.shoesquit;这时结果就会多一列salesperstores,用来得到该地区该产品每个商店的平均销售量。

这里要注意的是,在创建表达式时,我们还可以在SQL里用到SAS中的除LAG和DIFF之外的所有函数。

这里我们还可以用表达式计算出来的结果来进行子集查询,但一定要记住用calculated关键词。

例如我们要找出商店平均销售量大于5000的数据:方法一:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores from sashelp.shoeswhere Sales/Stores>5000;quit;方法二:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstores from sashelp.shoeswhere calculated salesperstores>5000;quit;2.8 查询结果展示2.8.1 order by数据排序默认的排序方式是升序,我们可以用DESC关键词来进行降序排列。

例如以sales 降序排列数据:proc sql;select *from sashelp.shoesorder by Sales DESC;quit;这里提示一下,我们可以用任意多列进行排序,包括表达式结果(不用calculated),但最好是选择的列。

2.8.2 LABEL与FORMATLABEL:改变输出变量名的内容FORMAT:改变列的值的输出方式例如,改变salesperstores的label和formatproc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstoreslabel='sales per stores'format=dollar12.2from sashelp.shoes;quit;2.9 处理SQL常用函数MEAN或AVG:均值COUNT或N或FREQ:非缺失值个数MAX:最大值MIN:最小值NMISS:缺失值个数STD:标准差SUM:求和VAR:方差2.9.1 求和sumproc sql;select Region, Product,Sales,Stores, sum(Sales,Inventory,Returns) as total from sashelp.shoes;quit;2.9.2 求均值avgproc sql;select Region, Product,Sales,Stores, avg(Sales) as salesavgfrom sashelp.shoes;quit;2.9.3 分组求均值group byproc sql;select Region,avg(Sales) as salesavgfrom sashelp.shoesgroup by Region;quit;2.9.4 计数countproc sql;select Region,count(*) as countfrom sashelp.shoesgroup by Region;quit;2.9.5 HAVING数据子集proc sql;select Region,count(*) as countfrom sashelp.shoesgroup by Regionhaving count(*)>50;quit;其它的就不多作介绍了,多用用就熟悉了2.10子查询2.10.1 找出regions平均sales大于全部平均sales的regionproc sql;select Region,avg(Sales) as salesavgfrom sashelp.shoesgroup by Regionhaving avg(Sales)>(select avg(Sales) from sashelp.shoes);quit;2.10.2 ANY关键词介绍>ANY(20,30,40) 最终效果:>20<ANY(20,30,40) 最终效果:<40=ANY(20,30,40) 最终效果:=20 or =30 or =40例如,选择出region为united state的sales小于任意region为africa的sales的数据proc sql;select Region,Salesfrom sashelp.shoeswhere Region='United States'and Sales<any(select Sales from sashelp.shoes where Region='Africa');quit;这个例子没有多少意义,只是说明一下any的用法2.10.3 ALL关键词介绍>ALL (20,30,40) 最终效果:>40<ALL (20,30,40) 最终效果:<20例如,选择出region为united state的sales小于所有region为africa的sales的数据proc sql;select Region,Salesfrom sashelp.shoeswhere Region='United States'and Sales<all(select Sales from sashelp.shoes where Region='Africa');quit;2.10.4 EXISTS与NOT EXISTSproc sql;select *from sashelp.shoeswhere exists(select * from sashelp.orsales);quit;。

相关文档
最新文档