SAS中的SQL语句大全
MSSQL语句大全和常用SQL语句命令的作用

MSSQL语句大全和常用SQL语句命令的作用
1.SELECT:用于从数据库中检索数据,可以选择特定的列和行。
2.INSERTINTO:用于向数据库表中插入数据。
3.UPDATE:用于更新数据库表中的数据。
4.DELETEFROM:用于从数据库表中删除数据。
5.CREATEDATABASE:用于创建新的数据库。
6.CREATETABLE:用于创建新的数据表。
7.ALTERTABLE:用于修改数据库表的结构,如添加、修改或删除列。
8.DROPDATABASE:用于删除整个数据库及其相关的对象。
9.DROPTABLE:用于删除数据库中的数据表。
10.TRUNCATETABLE:用于删除表中的所有数据,但不删除表结构。
11.ORDERBY:用于对结果集进行排序。
12.GROUPBY:用于将结果集按照一个或多个列进行分组。
13.WHERE:用于筛选结果集,只返回符合指定条件的行。
14.HAVING:用于筛选分组后的结果集,只返回符合指定条件的分组。
15.JOIN:用于将两个或多个表根据一个或多个共同的字段进行连接。
16.UNION:用于合并两个或多个SELECT语句的结果集。
17.LIKE:用于在WHERE子句中进行模糊匹配。
18.IN:用于指定一个条件范围。
以上是一些常用的SQL语句命令,通过这些命令可以实现对数据库的增删改查操作,并对结果集进行排序、分组、连接等处理。
mssql 基本语句

mssql 基本语句1.创建数据库SqlCREATE DATABASE DatabaseName;2.删除数据库SqlDROP DATABASE dbname;3.查看所有数据库SqlSELECT name FROM sys.databases;4.创建新表SqlCREATE TABLE dbo.TableName (Column1 datatype [NOT NULL] [PRIMARY KEY], Column2 datatype,...);5.插入数据SqlINSERT INTO TableName (Column1, Column2)VALUES ('value1', 'value2');6.更新数据SqlUPDATE TableNameSET Column1 = 'new_value'WHERE Condition;7.删除数据SqlDELETE FROM TableNameWHERE Condition;8.选择数据(查询)SqlSELECT Column1, Column2FROM TableNameWHERE SomeCondition;9.联接查询SqlSELECT A.Column1, B.Column2FROM TableA AS AINNER JOIN TableB AS B ON A.Key = B.Key;10.创建索引SqlCREATE INDEX idx_Name ON TableName (ColumnName);11.修改表结构SqlALTER TABLE TableNameADD ColumnNew datatype;-- 或者ALTER TABLE TableNameALTER COLUMN ColumnOldName datatype;-- 添加约束ALTER TABLE TableNameADD CONSTRAINT FK_ForeignKey FOREIGN KEY(ForeignKeyColumn) REFERENCESPrimaryTable(PrimaryKeyColumn);12.清空表数据但保留表结构SqlTRUNCATE TABLE TableName;13.删除表SqlDROP TABLE TableName;14.查询表中所有列SqlSELECT * FROM TableName;15.计数查询SqlSELECT COUNT(*) FROM TableName;16.分组和聚合函数SqlSELECT Column1, COUNT(*) AS CountOfColumn1 FROM TableNameGROUP BY Column1;17.排序数据SqlSELECT *FROM TableNameORDER BY Column1 ASC, Column2 DESC;18.子查询SqlSELECT *FROM TableName1WHERE Column1 IN (SELECT Column2 FROM TableName2);19.创建视图SqlCREATE VIEW ViewName ASSELECT Column1, Column2FROM TableNameWHERE Condition;20.执行事务SqlBEGIN TRANSACTION;-- SQL statements hereCOMMIT TRANSACTION;21.条件语句(IF EXISTS)SqlIF NOT EXISTS (SELECT * FROM sys.objectsWHERE object_id =OBJECT_ID(N'[dbo].[TableName]')AND type in (N'U'))BEGINCREATE TABLE dbo.TableName ...END22.自连接查询SqlSELECT A.Column1, B.Column1FROM TableName AS AINNER JOIN TableName AS B ON A.Key = B.RelatedKey; 23.创建存储过程SqlCREATE PROCEDURE dbo.ProcedureNameASBEGIN-- SQL statements hereSELECT * FROM TableName;END24.执行存储过程SqlEXEC dbo.ProcedureName;25.创建函数SqlCREATE FUNCTION dbo.FunctionName (@param1 datatype) RETURNS datatypeASBEGINDECLARE@result datatype;SET@result = (SELECT Column1 FROM TableName WHERE Condition);RETURN@result;END26.使用函数SqlSELECT dbo.FunctionName(value) FROM TableName;27.创建触发器SqlCREATE TRIGGER dbo.TriggerNameON dbo.TableNameAFTER INSERT, UPDATEASBEGIN-- 触发器逻辑,如记录日志等INSERT INTO LogTable (Column1, Column2)SELECT inserted.Column1, inserted.Column2 FROM inserted;END28.查询表结构信息SqlSELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName';29.分区表创建分区表可以将大型表物理分割成多个较小、更易管理的部分:SqlCREATE PARTITION FUNCTION PartitionFunctionName(datatype)AS RANGE LEFT FOR VALUES (value1, value2, ...);CREATE PARTITION SCHEME PartitionSchemeNameAS PARTITION PartitionFunctionNameTO (filegroup1, filegroup2, ...);CREATE TABLE TableName (...) ON PartitionSchemeName (PartitioningColumn);30.窗口函数对数据集进行分析并返回排名、累计值、移动平均等统计量:SqlSELECTColumn1,SUM(Column2) OVER (ORDER BY Column3 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS RunningTotalFROM TableName;。
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语句完全教程之二:数据合并与建表、建视图索引等本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。
转载请注明出处:/s/blog_5d3b177c0100cm1t.html1 连接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 27132 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语句来选择符合条件的数据作为输出结果。
sql包含的语句

sql包含的语句SQL(Structured Query Language)是用于管理关系型数据库的标准化语言。
它可以用于查询、插入、更新和删除数据库中的数据。
下面将列举10个常见的SQL语句及其用途。
1. SELECT语句:SELECT语句用于从数据库中检索数据。
它可以检索特定的列或所有列,并可以进行条件筛选、排序和分组。
例如:SELECT * FROM employees;SELECT name, age FROM customers WHERE country='China';2. INSERT INTO语句:INSERT INTO语句用于向数据库中插入新的行。
可以指定要插入的表、要插入的列和要插入的值。
例如:INSERT INTO customers (name, age, country) VALUES ('Alice', 25, 'USA');3. UPDATE语句:UPDATE语句用于更新数据库中的现有行。
可以指定要更新的表、要更新的列和更新的值,还可以使用WHERE子句来指定更新的条件。
例如:UPDATE employees SET salary=5000 WHERE department='IT';4. DELETE FROM语句:DELETE FROM语句用于从数据库中删除行。
可以指定要删除的表和要删除的条件。
例如:DELETE FROM customers WHERE country='China';5. CREATE TABLE语句:CREATE TABLE语句用于创建新的数据库表。
可以指定表的名称、列的名称和数据类型以及其他约束。
例如:CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age INT,department VARCHAR(50));6. ALTER TABLE语句:ALTER TABLE语句用于修改现有的数据库表。
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函数用于提取某个字符串的部分内容。
第六章SAS过程中常用语句

6.5 WEIGHT语句
语句格式: WEIGHT 变量; 功能: 在过程中规定一个数值变量,并以它的值作为观测值的权重。
*
6.6 FREQ 语句
语句格式: FREQ 变量; 功能: 规定一个数值变量,它的值表示数据集中某观测值出现的频数。 说明: 数据集中观测值总数等于FREQ变量的和。
*
例: DATA B; INPUT SEX $ AGE NUMBER; CARDS ; F 20 10 F 22 23 M 21 19 M 22 16 PROC MEANS ; VAR AGE ; PROC MEANS ; FREQ NUMBER ; VAR AGE ;
*
DATA SCORE; LENGTH NAME $ 12; INPUT NAME SEX GROUP $ T1-T3 @@ ; S=SUM(OF T1-T3) ; CARDS; WANGDONG 1 1 90 70 60 XUEPING 2 2 85 95 88 ZHOUHUA 1 1 77 84 69 HEYAN 1 2 95 78 88 SUNHONG 2 3 89 97 87 ZHAOBIN 2 3 66 98 86 PROC FORMAT ; VALUE SEXFMT 1='MALE' 2='FEMALE'; PROC PRINT DATA=SCORE; FORMAT SEX SEXFMT. ; RUN ;
*
*
6.7 ID 语句
语句格式: ID 变量表; 功能: 在输出数据集时,用该语句所规定的变量来识别观测值。 例:PROC PRINT DATA=A; PROC PRINT DATA=A; ID NAME;
*
*
*
SAS中的SQL语句大全教案资料

SAS中的SQL语句完全教程之一:SQL简介与基本查询功能本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)〉为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。
1 SQL过程步介绍1.1 SQL过程步可以实现下列功能:查询SAS数据集、从SAS数据集中生成报表、以不同方式实现数据集合并、创建或删除SAS 数据集、视图、索引等、更新已存在的数据集、使得SAS系统可以使用SQL语句、可以和SAS的数据步进行替换使用。
注意,SQL过程步并不是用来代替SAS数据步,也不是一个客户化的报表工具,而是数据处理用到的查询工具。
1.2 SQL过程步的特征SQL过程步并不需要对每一个查询进行重复、每条语句都是单独处理、不需要print过程步就能打印出查询结果、也不用sort过程步进行排序、不需要run、要quit来结束SQL过程步1.3 SQL过程步语句SELEC:T 查询数据表中的数据ALTER增加、删除或修改数据表的列CREATE创建一个数据表DELETE删除数据表中的列DESCRIBE 列出数据表的属性DROP删除数据表、视图或索引INSERT 对数据表插入数据RESET 没用过,不知道什么意思SELECT 选择列进行打印UPDATE 对已存在的数据集的列的值进行修改2 SQL基本查询功能2.1 SELECT语句基本语法介绍SELECT <DISTINCT> obje-cittem <, ...object -item>FROM from-list<WHERE sq-lexpression><GROUP BY group-by-item <, ... group-by-item>><HAVING sq-l expression><ORDER BY orde-rby-item <, ... order -by-item>>;这里SELECT 指定被选择的列FROM 指定被查询的表名WHERE 子数据集的条件GROUP BY将数据集通过group进行分类HAVING:根据GROUP BY勺变量得到数据子集ORDER BY对数据集进行排序2.2 SELECT语句的特征选择满足条件勺数据、数据分组、对数据进行排序、对数据指定格式、一次最多查询32 个表。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S A S中的S Q L语句大全标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]SAS中的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系统中,对于表名和变量名一般不超过32个字符,对于库名,文件引用名,格式等不能超过8个字符Validate关键字Validate关键字只存在于select语句中、可以在不运行查询的情况下测试语句的语法、检查列名是否合法、对于不正确的查询将打印其消息。
例:1 proc sql;2 validate3 select Region, Product,Sales4 from5 where Region = 'Africa';NOTE: PROC SQL 语句有有效语法。
6 quit;此外,我们还可以用noexec选项也可以用来进行语法测试。
例:7 proc sql noexec;8 select Region, Product,Sales9 from10 where Region = 'Africa';NOTE: 由于 NOEXEC 选项,未执行语句。
11 quit;这里提示未执行,未提示错误,说明该语句没有语法错误。
但是如果加入一个表里没有字段,这里就会出现错误,例:12 proc sql noexec;13 select Region, Product,Sales,test14 from15 where Region = 'Africa';ERROR: 以下这些列在起作用的表中没有找到: test.16 quit;查询列我们可以像那样查询指定列,也可以用*来查询所有列。
例:proc sql;select *from ;quit;这里我们可以用feedback选项来查看到底我们选择了哪些列:17 proc sql feedback;18 select *19 from ;NOTE: Statement transforms to:select , , , , , ,from ;20 quit;这时,我们可以看到从表中选择了8个列消除重复值我们可以用distinct选项来消除重复值。
例如,我们要得到没有重复的所有地区的名称:proc sql;select distinct Regionfromquit;where子集查询比较运算符先列出where语句用到的比较运算符:LT < 小于GT > 大于EQ = 等于LE <= 小于或等于GE >= 大于或等于NE ^= 不等于例如,我们要查询sales大于100000的所有数据:proc sql;select *fromwhere sales>100000;quit;in:只要满足in里的任意一个值,表达式即为真,例如,我们要选择Region在Africa 和Eastern Europe的所有数据:proc sql;select *fromwhere Region in ('Africa','Eastern Europe');quit;逻辑运算符OR | 或AND & 是NOT ^ 非例如,选择Region在Africa和Eastern Europe,且销售额大于100000的所有数据:proc sql;select *fromwhere Region in ('Africa','Eastern Europe') and sales>100000; quit;CONTAINS或:判断某列是否包含指定字符串例如,选择列Region包含’Afr’的数据:proc sql;select *fromwhere Region 'Afr';quit;IS NULL或IS MISSING:判断某列数据是否为空例如,如果找出Region为空的数据:proc sql;select *fromwhere Region is missing;quit;注意,这里我们还可以用以下表达式对where语句进行替换。
如果region为数值型变量,则可以用region=.,如果region为字符型变量,则可以用region= ‘’进行替换。
Between and:选择某一区间的数据例如选择sales大于100000,但小于200000的所有数据:proc sql;select *fromwhere sales between 100000 and 200000;quit;like:判断是否能匹配某些字符例如,选择以region以A开头的所有地区proc sql;select *fromwhere Region like 'A%';quit;这里注意有两类通配符,‘%’可以通配任意个任意字符,‘_’只能通配一个任意字符 =*:类似匹配这里由于里没有符合要求的数据,所有就用书上的例子说明一下吧:Where lastname=* ‘smith’,出来的结果可能是:smith,smythe等表达式我们可以通过已有的列进行计算来得到新的列,这时用关键词as来给新的列赋列名,例如:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstoresfromquit;这时结果就会多一列salesperstores,用来得到该地区该产品每个商店的平均销售量。
这里要注意的是,在创建表达式时,我们还可以在SQL里用到SAS中的除LAG和DIFF之外的所有函数。
这里我们还可以用表达式计算出来的结果来进行子集查询,但一定要记住用calculated 关键词。
例如我们要找出商店平均销售量大于5000的数据:方法一:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstoresfromwhere Sales/Stores>5000;quit;方法二:proc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstoresfromwhere calculated salesperstores>5000;quit;查询结果展示order by数据排序默认的排序方式是升序,我们可以用DESC关键词来进行降序排列。
例如以sales降序排列数据:proc sql;select *fromorder by Sales DESC;quit;这里提示一下,我们可以用任意多列进行排序,包括表达式结果(不用calculated),但最好是选择的列。
LABEL与FORMATLABEL:改变输出变量名的内容FORMAT:改变列的值的输出方式例如,改变salesperstores的label和formatproc sql;select Region, Product,Sales,Stores,Sales/Stores as salesperstoreslabel='sales per stores'format=from ;quit;处理SQL常用函数MEAN或AVG:均值COUNT或N或FREQ:非缺失值个数MAX:最大值MIN:最小值NMISS:缺失值个数STD:标准差SUM:求和VAR:方差求和sumproc sql;select Region, Product,Sales,Stores, sum(Sales,Inventory,Returns) as total from ;quit;求均值avgproc sql;select Region, Product,Sales,Stores, avg(Sales) as salesavgfrom ;quit;分组求均值group byproc sql;select Region,avg(Sales) as salesavgfromgroup by Region;quit;计数countproc sql;select Region,count(*) as countfromgroup by Region;quit;HAVING数据子集proc sql;select Region,count(*) as countfromgroup by Regionhaving count(*)>50;quit;其它的就不多作介绍了,多用用就熟悉了子查询找出regions平均sales大于全部平均sales的region proc sql;select Region,avg(Sales) as salesavgfromgroup by Regionhaving avg(Sales)>(select avg(Sales) from ;quit;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,Salesfromwhere Region='United States'and Sales<any(select Sales from where Region='Africa');quit;这个例子没有多少意义,只是说明一下any的用法ALL关键词介绍>ALL (20,30,40) 最终效果:>40<ALL (20,30,40) 最终效果:<20例如,选择出region为united state的sales小于所有region为africa的sales的数据proc sql;select Region,Salesfromwhere Region='United States'and Sales<all(select Sales from where Region='Africa');quit;EXISTS与NOT EXISTSproc sql;select *fromwhere exists(select * from ;quit;SAS中的SQL语句完全教程之二:数据合并与建表、建视图SAS中的SQL语句完全教程之二:数据合并与建表、建视图索引等本系列全部内容主要以《SQL Processing with the SAS System (Course Notes)》为主进行讲解,本书是在网上下载下来的,但忘了是在哪个网上下的,故不能提供下载链接了,需要的话可以发邮件向我索取,我定期邮给大家,最后声明一下所有资料仅用于学习,不得用于商业目的,否则后果自负。