【SAS ADVANCE】Performing Advanced Queries Using PROC SQL

一、Objectives

  • display all rows, eliminate duplicate rows, and limit the number of rows displayed
  • subset rows using other conditional operators and caculated values
  • enhance the formatting of query output
  • Using summary functions, such as COUNT, with and without grouping
  • subset groups of data by using the HAVING clause
  • subset data by using correlatedd and noncorrelated subqueries
  • Validate query syntax.

二、SELECT语句的语法

1 SELECT column-1<,...,column-n>                       /*SELECT指定用户需要输出到output内的列*/
2       FROM table-1|view-1<,...,table-n|view-n>       /*FROM指定去查询的table 或者view*/
3       <WHERE expression>                             /*WHERE子句:用表达式来subset或者restrict数据集的条件*/
4       <GROUP BY column-1<,...,column-n>>            /*GROUP BY按后面指定的列将数据集分成若干组*/
5       <HAVING expression>                          /*HAVING子句:在group条件下,用表达式subset或者restrict分组后的数据*/
6       <ORDER BY column-1<,...,column-n>>;         /*ORDER BY:根据其后的变量对查询结果进行排序*/

【备注】:PROC SQL SELECT语句中的子句需要按照上述顺序排列。

三、Displaying All Columns

 1. 利用SELECT *:可将所有列呈现出来

1 proc sql;
2      select *
3      from sasuser.staffchanges;

   2. FEEDBACK选项(debugging tools:让用户可以清楚的看到what is being submitted to the SQL processor)

当指定SELECT *语句时,PROC SQL中的FEEDBACK选项则会在日志中输出expand list of columns(每一列的详细名称)。

例如:

1 proc sql feedback;
2     select *
3         from sasuser.staffchanges;

则日志中会输出:

202 proc sql feedback;
203 select *
204 from sasuser.staffchages;
NOTE: Statement tranforms to:

       select STAFFCHANGES.EmpID,
STAFFCHANGES.LastName, STAFFCHANGES.FirstName,
STAFFCHANGES.City, STAFFCHANGES.State,
STAFFCHANGES.PhoneNumber
       from SASUSER.STAFFCHANGES

【备注】:日志不仅仅将星号(*)展开成详细列表,还会resolves macro variables and places parentheses around expressions to show their order of evaluation.

四、控制输出行的方法

  • 通过OUTOBS=选项来限制 the Number of Rows Displayed
      General form:PROC SQL statment with OUTOBS= option:

      PROC SQL OUTOBS=n;  /*其中n指定了输出的行数,这里的OUTOBS=选项类似于DATA SET选项中的OBS=*/

【备注】:这里的OUTOBS=选项仅仅是限制了display出来的行数,但是没有限制读入的行数。如果用户需要限制读入的行数,则可用INOBS=选项来控制。

例子:

1 proc sql outobs=10;
2      select flightnumber,date
3          from sasuser.flightschedule; 

日志提示:WARING: Statement terminated early due to OUTOBS=10 option.

【SAS ADVANCE】Performing Advanced Queries Using PROC SQL

时间: 2024-11-04 13:56:27

【SAS ADVANCE】Performing Advanced Queries Using PROC SQL的相关文章

【SAS ADVANCE】Performing Queries Using PROC SQL

SQL: Structured Query Language 一.Objectives in this chapter: invoke the SQL procedure select columns define new columns specify the table(s) to read specify subsetting criteria order rows by values of one or more columns group results by values of on

【SAS ADVANCE】通过COUNT函数实现counting values及HAVING子句

一. COUNT函数 在实际统计应用中,需要计算观测值出现的次数,这项功能可以通过COUNT函数来实现,它有下面三种形式和功能: form you used 返回值 例子 COUNT(*) 整个表或组的行数   select count(*) as Count COUNT(column) 当参数中所选定的列没有缺失值时,输出表或者组中该变量的行数   select count(jobcode) as Count COUNT(DISTINCT column) 该列中distinct values的

【SAS BASE】PROC EXPORT

PROC EXPORT可导出两种类型的文件: 导出delimited文件 1 *例子; 2 PROC EXPORT DATA=hotels 3 OUTFILE='C:\MyRawData\Hotels.txt' /*后缀名决定了输出文件的格式,除此之外,额也可以通过DBMS=选项来指定.*/ 4 /*例如:space-delimited文件时没有标准的后缀名的,只能通过DBMS=选项来输出*/ 5 DBMS=DLM /*若输出CSV文件,则DBMS=CSV; 6 若输出txt文件,则DBMS=T

【SAS BASE】处理数据集

本节内容包括:SET语句.MERGE语句.UPDATA语句.OUTPUT语句.TRANSPOSE语句和data-set选项及SAS Automatic Variables 一.SET语句(堆叠功能) 用SET语句修改数据集 DATA Friday; SET Sales;/SET 'C:\MySASLIB\trains.dat'; IF DAY='F'; Total=Propcorn+peanuts;/*建立新的变量*/ RUN; 用SET语句堆叠(stack)数据 1 DATA BOTH; 2

【SAS BASE】PROC REPORT

PROC REPORT包含了PRINT.MEANS.TABULATE.SORT过程和DATA步的功能: 一.基本语法: 1 DATA natparks; 2 INFILE 'C:\MyRawdata\parks.dat'; 3 INPUT Name $ 1-21 Type $ Region $ Museums Camping; 4 RUN; 5 6 /*-----Group and Across Variables(Group:纵向;Across:横向)---*/ 7 *Region as Gr

【SAS BASE】ODS OUTPUT

一.ODS的基本性质 ODS输出格式:LISTING(默认的标准SAS输出).HTML.RTF.PRTNTER.PS.PCL.PDF.OUTPUT(SAS OUTPUT Date-set).MARKUP.DOCUMENT; ODS内有table template(指定输出结构)和style template(指定外观结构):首先通过table template作用从procedure中产生数据,形成output project,然后经过style template作用送到destination加

【SAS BASE】PROC TABULATE(输出更加精美的tabulate报告)

PROC TABULATE的一般形式:(主语与FREQ过程不同,这里是table 语句,不是tables) 1 PROC TABULATE FORMAT=options;/*FORMAT=选项改变table中所有cell的格式*/ 2 VAR analysis-variable-list; 3 CLASS classification-variable-list;/*在下面table语句中出现的变量必须预先在VAR语句或CLASS出现过*/ 4 TABLE page-dimension, row

【SAS BASE】PROC FREQ

一般形式: 1 PROC FREQ; 2 TABLES variable_combinations/options; 3 /*variable_combinations 4 若为单变量:TABLE variable-name; 5 若为多变量: TABLE variable-name-1 variable-name-2 ...; 6 若为交叉变量:TABLES variable-name-1*variable-name-2; 7 */ 常见的options有: 1 LIST:将cross-tab

【SAS BASE】PROC MEAS

1 PROC MEANS OPTIONS; /*默认输出:非缺省数目.均值.标准差.最小值.最大值*/ 2 BY variable-list;/*必须要预先排序*/ 3 CLASS variable-list;/*功能与BY语句相同,不需要预先排序*/ 4 VAR variable-list; 5 OUTPUT OUT=data-set statistic(variable-list)=name-list; /*除了VAR与语句中的变量名外,还有两变量:_TYPE_和_FREQ_*/ 6 /*例