zoukankan      html  css  js  c++  java
  • 【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 one or more columns
    • end the SQL procedure
    • summarize data 
    • generate a report as the output of a query
    • create a table of the output of a query

    二、PROC SQL有何不同?

    • 与其他PROC步骤不同的是,PROC SQL由很多个子句构成。最常见的情形是PROC SQL代码中包含两个语句:第一季是PROC SQL;第二季是SELECT语句,而SELECT语句中就包含多了子句,例如:SELECT ...,.. FROM ...,....WEHER和ORDER BY;
    • PROC SQL过程不需要RUN语句,PROC SQL自动执行每一个查询;
    • 建议在末尾加上QUIT语句来结束运行;

    三、PROC SQL的基本格式

    LIBNAME libref 'SAS-data-library';
    1
    PROC SQL; /*invoke the SQL procedure*/
    2 CREATE TABLE table-name AS
    3     SELECT column-1<,...,column-n>                   /*specifies the column(s) to be selectd*/
    4        from table-1|view-1<,...,table-n|view-n>      /*specifies the table(s) to be queried*/
    5        <WHERE expression>                            /*subsets the data based on a condition*/
    6        <GROUP BY column-1<,...column-n>>             /*classifies the data into groups based  on the specifyed column*/
    7         <ORDER BY column-1<,...column-n>>;           /*sorts the rows that the query returns by the values of the specified columns*/
    8 QUIT;

     【注意事项】:

        SELECT语句包含多个子句,以分号结束

    四、PROC SQL输出

    PROC SQL语句  TYPE Of Output
    SELECT     report
    CREATE TABLE and SELECT  table
    CREATE VIEW AND SELECT   PROC SQL VIEW

     五、Order by语句中的编程注意事项

    1) 常常放在select语句的最后;
    2) 若用户需要逆序排序,则需将关键词DESC放在order by语句中需要逆序排列的变量后面,例如:

    1 order by jobcode desc;

    3) 在order by子句中,用户可通过指定select语句中变量的位置来代替其变量名,例如:

    1 proc sql;
    2      select empid,jobcode,salary,salary*.06 as bonus
    3      from sasuser.payrollmaster
    4      where salary<32000
    5      order by 2;

    4)在order by语句中,通过逗号列出变量,进行多变量排序

    1  proc sql;
    2       select empid,jobcode,salary,salary*.06 as bonus
    3       from sasuser.payrollmaster
    4       where salary<32000
    5       order by jobcode,empid;/order by 2,empid;

    六、join two or more tables 

    • 若需要join两个或多个tables,list the columns that you want to select from both tables in the SELECT clause.
    • Seperate all column names with commas.
    • 若用户需要引用的变量名出现在多个表中,则需要在该变量前加上表明的前缀,来指定其表名;
    • 若用户需要连接多个表,则需在from子句中加上多了表名,并用逗号隔开;
      1 proc sql;
      2     select salcomp.empid, lastname,
      3                newsals.salary,mewsalay
      4     from sasuser.salcomps, sasuser.newsals
      5     where salcomps.empid=newsals.empid
      6     order by lastname;

    七、Summarizing Groups of Data

           If you specify a GROUP BY clause in a query that does not contain a summary function, your clause is changed to an ORDER BY clause, and a message to the effect is written to the SAS log.

    1 proc sql;
    2     select membertype 
    3               sum(milestraveled) as TotalMiles
    4      from sasuser.frequentflyer
    5     group by membertype;
    6 /*输出每个membertype的milestraveled的和*/

    八、HAVING语句:在含有GROUP BY子句的PROC SQL中筛选行

        A HAVING clause works with the GROUP BY clause to restrict the groups that are displayed in the output,based one or more specified conditions.

    1 proc sql;
    2     select jobcode, avg(salary) as Avg
    3          from sasuser.payrollmaster
    4          group by jobcode
    5          having avy(salary)>40000
    6          order by jobcode;
  • 相关阅读:
    IOS开发之XML解析以及下拉刷新上拉加载更多的分享
    iOS之网络数据下载和JSON解析
    iOS开发常用网站
    用shell脚本打ipa包
    iOS开发之网络基础知识
    iOS开发之Block
    iOS开发之用代码实现数据库FMDB的操作
    iOS开发之下拉刷新和上拉加载
    IOS之XML解析
    IOS之网络数据下载和JSON解析
  • 原文地址:https://www.cnblogs.com/chenyn68/p/3896142.html
Copyright © 2011-2022 走看看