SQL group by命令
我有一个表,其中主id是permno公司标识符。该表还包含当年和当年的每周回报。最后,它有一个名为“rret”的列,当周回报率大于周上平均年回报率时,该列为1,否则为周下平均年回报率0 我想计算一家公司在给定年份的每周收益率上周和下周的标准差,然后计算两者之间的比率。到目前为止,我刚刚使用以下代码计算了每周收益率的标准差(upweek和downweek):SQL group by命令,sql,group-by,sas,proc-sql,Sql,Group By,Sas,Proc Sql,我有一个表,其中主id是permno公司标识符。该表还包含当年和当年的每周回报。最后,它有一个名为“rret”的列,当周回报率大于周上平均年回报率时,该列为1,否则为周下平均年回报率0 我想计算一家公司在给定年份的每周收益率上周和下周的标准差,然后计算两者之间的比率。到目前为止,我刚刚使用以下代码计算了每周收益率的标准差(upweek和downweek): proc sql; create table crash.duvol5 as select permno, fyear, rret, s
proc sql;
create table crash.duvol5 as
select permno, fyear, rret, std(weekly_ret) as stdret
from crash.duvol4
group by permno, fyear, rret
;
quit;
基本上,我想在另一个专栏中介绍:
我不知道如何用SQL计算它。任何帮助都将不胜感激。提前感谢。除法工作正常,但您需要使用LAG将值移到另一行
data want;
set have;
by permno fyear;
prev = lag(stdret);
if last.fyear then ratio = stdret/prev;
run;
未测试-请将数据以文本形式发布,以便于测试和回答您的问题。我必须从图像中键入数据,我太懒了。考虑条件聚合: proc-sql; 将表crash.duvol5创建为 选择permno、fyear、, 严格按照标准执行, 当rret=1时,则为stdCASE,然后为weekly\u ret ELSE。结束/ 当rret=0时,则为stdCASE,然后为weekly\u ret ELSE。以标准比率结束 来自crash.duvol4 permno分组,fyear; 退出
因此,您正在寻找从crash.duvol4中选择stdweekly_-ret作为stdret,其中rret=1按permno,fyear,rret分组/从crash.duvol4中选择stdweekly_-ret作为stdret,其中rret=0按permno,fyear,rret分组?用例语句hi,Zynon-Putney II,是的。我在找。事实上,我试着执行你的命令。每一部分都很好。但是分区/不起作用。非常感谢。这正是我想要的。非常感谢。