2016-11-29 130 views
-1

guys,SAS proc SQL嵌套功能

我的目标很简单。首先计算组的数量(surgid),然后得到每组中的平均值。我尝试了两个SQL,但都没有成功。徘徊谁知道我应该如何嵌套代码?

感谢, 安德烈

首先尝试:

proc sql; 
create table bhr_surg as 
select a.*, mean(b.numsurg) as meansurg from bhr as a, 
(select count(b.surgid) as numsurg from bhr as b) 

where surgid not in (1,2,3,7777) 
group by surgid,procyr; 
quit; 

第二个尝试:

proc sql; 
create table bhr_surg as 
select *, count(surgid) as numsurg, mean(calculated numsurg) as meansurg from bhr 

where surgid not in (1,2,3,7777) 
group by surgid,procyr; 
quit; 
+0

bhr中的列是什么?当你说它不起作用时,错误信息是什么?更好的是,请提供一个使用sashelp库作为示例数据的独立示例。 – Snorex

+0

在第一个例子中“from bhr as a”不是有效的语法。 FROM子句中的别名使用类似“from bhr a”(no“as”)的语法 – Snorex

+0

嗨,Snorehorse,在第一个示例中,有两个错误。首先是“在相关名称B标识的表/视图中找不到列numsurg”。其次是“MEAN汇总功能需要数字参数。”我认为第二个是因为第一个。 “as”在这里并不重要。我删除“as”,同样的错误。数据非常简单,surgid是外科医生身份证。我想在不同年份(procyr)统计每位外科医生(生殖器)。 – Andrea

回答

0

您的问题是,你通过除了surgid分组的东西,所以你的计数手段是计数和手段的一部分你的ID组。以下应该工作:

data have; 
    input surgid numsurg; 
    datalines; 
10 1000 
10 1500 
10 2000 
20 3000 
20 4000 
30 2500 
; 
run; 


proc sql; 
    create table want as select distinct 
     *, count(numsurg) as count, mean(numsurg) as mean 
     from have 
     group by surgid; 
quit;