http://crackman.net/?p=429
Given the SAS data set WORK.ONE:
Rep Cost
—– —-
SMITH 200
SMITH 400
JONES 100
SMITH 600
JONES 100
The following SAS program is submitted;
proc sql;
select
Rep,
avg(Cost)
from WORK.ONE
order by Rep
;
quit;
Which result set would be generated?
A.
JONES 280
JONES 280
SMITH 280
SMITH 280
SMITH 280
B.
JONES 600
SMITH 100
C.
JONES 280
SMITH 280
D.
JONES 100
JONES 100
SMITH 600
SMITH 600
SMITH 600
这里答案为A。
SQL语句中,AVG计算的是一列的平均值,所以AVG只有一个值,答案选择A。
如果改成为:
proc sql;
select
Rep,
avg(Cost)
from WORK.ONE
group by Rep
order by Rep
;
quit;
结果会如何呢?
示例程序:
data crackman;
input rep $ cost@;
datalines;
SMITH 200
SMITH 400
JONES 100
SMITH 600
JONES 100
;
run;
proc sql;
select
Rep,
avg(Cost)
from WORK.CRACKMAN
order by Rep
;
quit;