b******e 发帖数: 228 | 1 请教两个SAS ADV问题,包子答谢!
下面这道题网上给的答案是A,但是A里给sum(Expense)的 label=’COST’ ,与结果的
‘Cost’不一致。个人认为答案应该是D,在sum(Expense) as Cost之后,data sets
VISIT1和VISIT2的columns with common names, 用outer union corr可以overlay the
columns。如有错误,请指正,非常感谢!
26. Given the following SAS data sets:
WORK.VISIT1 WORK.VISIT2
Id Expense Id Cost
— ——- — —-
001 500 001 300
001 400 002 600
003 350
The following result set was summarized and
consolidated using the SQL procedure:
Id Cost
— —-
001 300
001 900
002 600
003 350
Which of the following SQL statements was
most likely used to generate this result?
A.
select
Id,
sum(Expense) label=’COST’
from WORK.VISIT1
group by 1
union all
select
Id,
sum(Cost)
from WORK.VISIT2
group by 1
order by 1,2
;
B.
select
id,
sum(expense) as COST
from
WORK.VISIT1(rename=(Expense=Cost)),
WORK.VISIT2
where VISIT1.Id=VISIT2.Id
group by Id
order by
Id,
Cost
;
C.
select
VISIT1.Id,
sum(Cost) as Cost
from
WORK.VISIT1(rename=(Expense=Cost)),
WORK.VISIT2
where VISIT1.Id=VISIT2.Id
group by Id
order by
Id,
Cost
;
D.
select
Id,
sum(Expense) as Cost
from WORK.VISIT1
group by Id
outer union corr
select
Id,
sum(Cost)
from WORK.VISIT2
group by Id
order by 1,2
;
--------------------------------
下面这一题网上答案是D,不是很理解,觉得应该是A;
直接set WORK.TWO; set WORK.ONE; 与题目中加if _n_=1 then set WORK.TWO; 有什么
不同?谢谢!
31. Given the SAS data sets:
WORK.ONE WORK.TWO
X Y SumY
– – —-
A 10 36
A 3
A 14
B 9
The following SAS DATA step is submitted:
data WORK.COMBINE;
if _n_=1 then set WORK.TWO;
set WORK.ONE;
run;
What data values are stored in data set WORK.COMBINE?
A.
An ERROR message is written to the SAS log and
the data set WORK.COMBINE is not created.
B.
SumY X Y
—- – –
36 A 10
C.
SumY X Y
—- – –
36 A 10
. A 3
. A 14
. B 9
D.
SumY X Y
—- – –
36 A 10
36 A 3
36 A 14
36 B 9 | s******s 发帖数: 2837 | 2 我觉得这两题是这样理解的。
第一题:D里面第二个dataset sum以后colume name变成了sum(Cost),out union corr
以后就出现了三列:id,cost,sum(Cost).A里面cost大小写确实不一样,不过sas识别
var是case insensitive,所以至少不是本题考查的点,不要在意这些细节。。。
第二题:multiple set option是依序读每个dataset的obs,读到最少obs的那个dataset
就不读了。所以只用set one;set two的话,读完第一个obs就不会继续读了,因为第二
个dataset只有一个obs。
用if _n_=1,可以读取并retain第二个dataset里面那个obs的值.PDV里面存有SumY并且
一直是36.当_n_=2的时候就没第二个dataset的事情了,只读第一个dataset的obs。所
以答案是D。 | b******e 发帖数: 228 | 3 第二题解了我的疑惑,非常感谢!
第一题我还是有疑问,D里面第二个dataset sum以后colume name应该没变,因为没有
as或者是label重命名。
包子已发,再次谢谢!
corr
dataset
【在 s******s 的大作中提到】 : 我觉得这两题是这样理解的。 : 第一题:D里面第二个dataset sum以后colume name变成了sum(Cost),out union corr : 以后就出现了三列:id,cost,sum(Cost).A里面cost大小写确实不一样,不过sas识别 : var是case insensitive,所以至少不是本题考查的点,不要在意这些细节。。。 : 第二题:multiple set option是依序读每个dataset的obs,读到最少obs的那个dataset : 就不读了。所以只用set one;set two的话,读完第一个obs就不会继续读了,因为第二 : 个dataset只有一个obs。 : 用if _n_=1,可以读取并retain第二个dataset里面那个obs的值.PDV里面存有SumY并且 : 一直是36.当_n_=2的时候就没第二个dataset的事情了,只读第一个dataset的obs。所 : 以答案是D。
| t*****w 发帖数: 254 | 4 D里面第二个dataset sum以后colume name应该是变了,而且变成了unknown variable
name.
'union all' does not care about column variable names. | b******e 发帖数: 228 | 5 原来是这样,非常感谢!包子已发~
variable
【在 t*****w 的大作中提到】 : D里面第二个dataset sum以后colume name应该是变了,而且变成了unknown variable : name. : 'union all' does not care about column variable names.
| s******s 发帖数: 2837 | 6 楼上已经回答了。而且你intuitive的想想,如果select cost, sum(cost),sum以后的
名字不变,岂不是有两个column叫cost了?那肯定不对。
【在 b******e 的大作中提到】 : 第二题解了我的疑惑,非常感谢! : 第一题我还是有疑问,D里面第二个dataset sum以后colume name应该没变,因为没有 : as或者是label重命名。 : 包子已发,再次谢谢! : : corr : dataset
| c****0 发帖数: 14490 | 7 第一题,D的结果是:
id Cost
001 . 300
001 900 .
002 . 600
003 350 .
正确答案是A哦
the
【在 b******e 的大作中提到】 : 请教两个SAS ADV问题,包子答谢! : 下面这道题网上给的答案是A,但是A里给sum(Expense)的 label=’COST’ ,与结果的 : ‘Cost’不一致。个人认为答案应该是D,在sum(Expense) as Cost之后,data sets : VISIT1和VISIT2的columns with common names, 用outer union corr可以overlay the : columns。如有错误,请指正,非常感谢! : 26. Given the following SAS data sets: : WORK.VISIT1 WORK.VISIT2 : Id Expense Id Cost : — ——- — —- : 001 500 001 300
| c****0 发帖数: 14490 | | b******e 发帖数: 228 | 9 也要谢谢你!包子已发~~
【在 c****0 的大作中提到】 : 原来大家已经回答了。。。
|
|