標籤:style blog color os io strong 資料 for
一、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,date3 from sasuser.flightschedule;
日誌提示:WARING: Statement terminated early due to OUTOBS=10 option.