[英]SQL Creating new variables
我对SQL缺乏经验,但是正在努力尝试将我的代码压缩到一个查询中,以提高效率。 下面是我遇到的一个更为复杂的问题的简化示例。 创建汇总组和变量的语法存在问题。 就我而言,数据存放在几个不同的表中,但是联接对我来说不是问题,因此我在这里仅创建了一个表。
这是我的数据:
Name Class Wk Score ExCred X
Joe A 1 35 ? 3
Hal A 1 50 5 4
Sal A 1 45 ? 3
Kim B 1 30 5 6
Cal B 1 40 ? 6
Joe A 2 50 ? 2
Hal A 2 40 ? 3
Sal A 2 40 ? 4
Kim B 2 40 5 5
Cal B 2 40 ? 4
我尝试创建的表将如下所示:
Class Wk Avg_Score Sum_X
A 1 45 10
B 1 37.5 12
A 2 43.3 9
B 2 42.5 9
因此,数据按班级和周进行汇总。 avg_score是每个学生的总和以及“分数”和“ ExCred”的平均值。 Sum_X只是每个类的X之和。
我已经通过使用多个proc means语句在SAS SQL中获得了成功,但是这很笨拙,而且似乎需要很长时间。 必须有一种更优雅的方法来执行此操作。 我知道它可能涉及按声明分组。
谢谢。 减寿
我没有特别的理由不在这里使用proc means
。 在相当大的数据集上,它应该比proc sql
快得多。
proc means data=have;
class class wk;
types class*wk;
var score x;
output out=want mean(score)= sum(x)=;
run;
只需预处理数据以将ExCred包括在Score变量中即可; 如果执行时间有问题,请使用视图来执行。
如果您确实想在sql中执行此操作,则确实可以使用group by。
proc sql;
create table want as
select class, wk, mean(score+ex_cred), sum(x)
from have
group by class, wk;
quit;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.