全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8259 5
2011-01-24
Item 6 of 63 Mark item for review  Item 6 of 63 Mark item for review  Item 6 of 63 Mark item for review  Item 6 of 63 Mark item for review
   
   The table WORK.PILOTS contains the following data:
     WORK.PILOTS
    Id   Name     Jobcode  Salary
   ---  ------   -------  ------
   001  Albert   PT1       50000
   002  Brenda   PT1       70000
   003  Carl     PT1       60000
   004  Donna    PT2       80000
   005  Edward   PT2       90000
   006  Flora    PT3      100000
The data set was summarized to include average
salary based on jobcode:        
  
   Jobcode  Salary     Avg      
   -------  ------   -----      
   PT1       50000   60000      
   PT1       70000   60000      
   PT1       60000   60000      
   PT2       80000   85000      
   PT2       90000   85000      
   PT3      100000  100000      
  
Which SQL statement could NOT generate   
this result?  

        A.
select  
   Jobcode,   
   Salary,     
   avg(Salary) label='Avg'      
from WORK.PILOTS
group by Jobcode
order by Id   
;      
       B.
select  
   Jobcode,   
   Salary,     
   (select avg(Salary)   
   from WORK.PILOTS as P1        
   where P1.Jobcode=P2.Jobcode) as Avg   
from WORK.PILOTS as P2   
order by Id   
;      
       C.
select  
   Jobcode,   
   Salary,     
   (select avg(Salary)   
   from WORK.PILOTS      
   group by Jobcode) as Avg
from WORK.PILOTS
order by Id   
;      
       D.
select  
   Jobcode,   
   Salary,     
   Avg  
from   
   WORK.PILOTS,  
  (select      
      Jobcode as Jc,     
      avg(Salary) as Avg
   from WORK.PILOTS      
   group by 1)
where Jobcode=Jc
order by Id   
;  

我在SAS9.2上得到的结果是:
A,成功。
B,没结果但信息提示NOTE: The query as specified involves ordering by an item that doesn't appear in its SELECT clause.。
C,ERROR: Subquery evaluated to more than one row.
D,ERROR: Ambiguous reference, column Avg is in more than one table.
到底哪个是正确答案呢?为什么?

----------------------------------------------------------------------

Item 50 of 63 Mark item for review   Item 50 of 63 Mark item for review   Item 50 of 63 Mark item for review   Item 50 of 63 Mark item for review      
  
The table WORK.PILOTS contains the following data:
  
   Id   Name     Jobcode  Salary
   ---  ------   -------  ------
   001  Albert   PT1       50000
   002  Brenda   PT1       70000
   003  Carl     PT1       60000
   004  Donna    PT2       80000
   005  Edward   PT2       90000
   006  Flora    PT3      100000
  
A query was constructed to display the pilot salary      
means at each level of Jobcode and the difference to      
the overall mean salary:  
Jobcode    Average  Difference  
------------------------------  
PT1          60000      -15000  
PT2          85000       10000  
PT3         100000       25000  
  
Which select statement could NOT have   
produced this output?   


        A.
select  
   Jobcode,   
   avg(Salary) as Average,      
   calculated Average - Overall as difference   
from   
   WORK.PILOTS,  
   (select avg(Salary) as Overall from WORK.PILOTS)
group by jobcode
;      
  
     B.
select  
   Jobcode,   
   avg(Salary) as Average,      
   (select avg(Salary) from WORK.PILOTS) as Overall,     as…from  
   calculated Average - Overall as Difference   
from WORK.PILOTS
group by 1     
;      
  
     C.
select  
   Jobcode,   
   Average,   
   Average-Overall as Difference
from   
   (select Jobcode, avg(Salary) as Average      
   from WORK.PILOTS      
   group by 1),  
   (select avg(Salary) as Overall
   from WORK.PILOTS)     
;  
D.
select  
   Jobcode,   
   avg(Salary) as Average,      
   calculated Average-(select avg(Salary) from WORK.PILOTS)        
      as Difference      
from WORK.PILOTS
group by 1     
;   
这道题和Q6很象。我在SAS9.2上得到的结果是:
A,成功。
B,ERROR: The following columns were not found in the contributing tables: Overall。
C,没结果但信息提示NOTE: The execution of this query involves performing one or more Cartesian product joins that can not be optimized.
D,成功。
到底哪个是正确答案呢?为什么?

----------------------------------------------------------------------

Item 23 of 63 Mark item for review   Item 23 of 63 Mark item for review   Item 23 of 63 Mark item for review   Item 23 of 63 Mark item for review      
  
  Given the SAS data set SASUSER.HIGHWAY:
  
  Steering  Seatbelt  Speed  Status   Count     
  --------  --------  -----  -------  -----     
  absent    No        0-29   serious     31     
  absent    No        0-29   not       1419     
  absent    No        30-49  serious    191     
  absent    no        30-49  not       2004     
  absent    no        50+    serious    216  
The following SAS program is submitted:
  
  %macro SPLIT;  
     proc sort
           data=SASUSER.HIGHWAY  
           out=WORK.UNIQUES(keep=Status)  
           nodupkey;     
        by Status;      
     run;      
  
     data _null_;
        set uniques end=Lastobs;
        call symputx('Status'||left(_n_),Status);  
        if Lastobs then call symputx('Count',_n_);
     run;      
  
     %local i;
     data      
        %do i=1 %to &count;      
           [_insert_reference_]  
        %end;  
        ;      
        set SASUSER.HIGHWAY;     
        select(Status);  
           %do i=1 %to &Count;   
              when("[_insert_reference_]") output [_insert_reference_];     
           %end;
           otherwise;   
        end;   
     run;      
   %mend;      
  
   %SPLIT      
  
  What macro variable reference completes
  the program to create the WORK.NOT and  
  WORK.SERIOUS data sets?        


        A.
&Status&i      
  
     B.
&&Status&i      
  
     C.
&Status&Count   
  
     D.
&&Status&Count  

完全看不懂题。谁能给讲解一下?

----------------------------------------------------------------------

Item 39 of 63 Mark item for review   Item 39 of 63 Mark item for review   Item 39 of 63 Mark item for review   Item 39 of 63 Mark item for review      
  
  The following SAS program is submitted:
  
  %let Mv=shoes;
  %macro PRODUCT(Mv=bicycles);   
     %let Mv=clothes;   
  %mend;  
%PRODUCT(Mv=tents)     
  %put Mv is &Mv;
  
  What is written to the SAS log?


        A.
Mv is bicycles  
  
     B.
Mv is clothes   
  
     C.
Mv is shoes     
  
     D.
Mv is tents
这题也不懂,但觉得和global symbol table and local symbol table 有关。谁能帮忙捅破这层儿窗户纸啊?

----------------------------------------------------------------------

Item 21 of 63 Mark item for review   Item 21 of 63 Mark item for review   Item 21 of 63 Mark item for review   Item 21 of 63 Mark item for review      
  
  The following SAS program is submitted:
  
  data WORK.NEW;
     do i=1, 2, 3;      
        Next=cats('March' || i );
        infile XYZ      
           filevar=Next  
           end=Eof;      
        do until (Eof);  
           input Dept $ Sales;   
        end;   
     end;      
  run;  
  
  The purpose of the FILEVAR=option on the      
  INFILE statement is to name the variable      
  Next, whose value:     


        A.
points to a new input file.      
  
     B.
is output to the SAS data set WORK.NEW.   
  
     C.
is an input SAS data set reference.   
  
     D.
points to an aggregate storage location.
答案A和C那个对?为什么?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-1-25 10:49:44
有些題我也不知道答案, 僅就我能回答的試著回答您, 大家相互交流交流
item 6
您必須把四個選項各自寫在一個proc sql裡, 所以總共會寫出四個proc sql, 而非一個
這樣去執行, 就會發現C才是正確答案
log會出現這個訊息ERROR: Subsquery evaluated to more than one row.

item 50
和第六題一樣, 要分別寫在不同的proc sql裡執行
正確答案應該是B
因為在   calculated Average - Overall as Difference    這一行中
Overall的前面也需要加上calculated
( 不過選項A輸出的表格最後一個變項名是 difference, 是小寫的d, 其實也可以說是無法產生和題目要求的一模一樣的output  )

item 23
item 21
這兩題小的我也不太了解, 有待其他先進給予指教

item 39
這題我的想法是...
%let Mv=shoes;
    %macro PRODUCT(Mv=bicycles);   
          %let Mv=clothes;   
    %mend;  
%PRODUCT(Mv=tents)     
%put Mv is &Mv;

藍色部分屬於一個macro, 所以在這個macro內所用到的macro variable, 出了藍色的範圍之外就都無作用了
因此這部分對這題的影響大可置之不理

紅色部分是call了一個macro, 並在呼叫的同時, 指定了macro variable的內容是tents, 而送入macro PRODUCT中
所以當macro PRODUCT執行完了, 這個macro variable也就沒作用了

所以到最後, 還能夠起作用的Mv, 只有一開始所給予的shoes了
正確答案應該是C



也是個一邊讀書一邊準備考試的小考生....
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-25 23:01:39
多谢指教。不过在题6中,为何B是对的,而C是错的呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-1-26 11:02:05
23:&&的作用和指针差不多答案应该是A,&status&i的,结果是data status1 status2;而&&status&i的结果是data &status1 &status2;
21:SAS Help里面讲的
FILEVAR=variable
specifies a variable whose change in value causes the INFILE statement to close the current input file and open a new one. When the next INPUT statement executes, it reads from the new file that the FILEVAR= variable specifies. Like automatic variables, this variable is not written to the data set.

Restriction: The FILEVAR= variable must contain a character string that is a physical filename.  
Interaction: When you use the FILEVAR= option, the file-specification is just a placeholder, not an actual filename or a fileref that has been previously assigned to a file. SAS uses this placeholder for reporting processing information to the SAS log. It must conform to the same rules as a fileref.
Tip: Use FILEVAR= to dynamically change the currently opened input file to a new physical file.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-2-18 02:22:16
求考试资料下载。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-2-28 19:01:21
第23题是:  
Given the SAS data set SASUSER.HIGHWAY:
   
   Steering  Seatbelt  Speed  Status   Count     
   --------  --------  -----  -------  -----     
   absent    No        0-29   serious     31     
   absent    No        0-29   not       1419     
   absent    No        30-49  serious    191     
   absent    no        30-49  not       2004     
   absent    no        50+    serious    216  
The following SAS program is submitted:
   
   %macro SPLIT;  
      proc sort
            data=SASUSER.HIGHWAY  
            out=WORK.UNIQUES(keep=Status)  
            nodupkey;                                               /*使用nodupkey选项去除UNIQUES中重复值*/
         by Status;      
      run;      
   
      data _null_;
         set uniques end=Lastobs;
         call symputx('Status'||left(_n_),Status);     /*宏变量status1为not,status2为serious*/
         if Lastobs then call symputx('Count',_n_);   /*宏变量count为2*/
      run;      
   
      %local i;                                                      
      data      
         %do i=1 %to &count;      
            [_insert_reference_]                   /*用宏变量Status建立了两个数据集,分别叫做Serious和Not*/
         %end;  
         ;      
         set SASUSER.HIGHWAY;     
         select(Status);  
            %do i=1 %to &Count;   
               when("[_insert_reference_]") output [_insert_reference_];     /*Serious和Not数据集包含了表SASUSER.HIGHWAY中变量Status分别是Serious和Not的观测*/
            %end;
            otherwise;   
         end;   
      run;      
    %mend;      
   
    %SPLIT      
   
   What macro variable reference completes
   the program to create the WORK.NOT and  
   WORK.SERIOUS data sets?        

A. &Status&i      
B. &&Status&i     
C. &Status&Count  
D. &&Status&Count

答案为:B
&Status&i 的意思为status和i代表的变量组合的值,而&&Status&i指的是status1和status2代表的值,分别为not和serious。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群