程序如下:data work.temp1;
input id $ sex $ jobcode $ salary birth date7.@@;
format birth mmddyy8.;
datalines;
1009 m ta1 28880 02mar59 1017 m ta3 40858 28dec57
1036 f ta3 39392 19may65 1037 f ta1 28558 10apr64
1038 f ta1 26533 09nov69 1050 m me2 35167 14jul63
1065 m me2 35090 26jan44 1076 m pt1 66558 14oct55
1094 m fa1 22268 02apr70 1100 m bck 25004 01dec60
;
run;
proc sql;
select jobcode,count(jobcode) as number,avg(int((today()-birth)/365.25)) as avgage,avg(salary) as avgsal
from work.temp1
where avgage ge 46
group by jobcode;
quit;
proc sql;
select jobcode,count(jobcode) as number,avg(int((today()-birth)/365.25)) as avgage,avg(salary) as avgsal
from work.temp1
group by jobcode
having avgage ge 46;
quit;
每一个sql出现以下错误:
ERROR: The following columns were not found in the contributing tables: avgage.
问题:
1.where与having的区别?
2.是不是where 语句只能用于对数据集的单个观测进行条件限制,不能对多个观测结果进行条件限制,也就是说不能对上述的count()、avg()等计算多个观测得出的结果进行限制?
3.要求计算的count()、avg()是分组后的结果,所以针对其计算结果只能的group后的having进行条件限制?