function - 有没有更好的方法在 PROC SQL 中使用嵌套函数?
问题描述
我正在做一些需要不止一次查询的事情,proc sql
所以我尝试编写代码来执行类似于嵌套函数的data step
. 这是一个示例:数据测试有 2 个变量,Group 和 Num。
data test;
input Group$ Num;
cards;
A 10
A 30
B 10
B 40
C 30
C 30
;
run;
现在我正在寻找Group
具有最大平均值的那个。所以首先我计算每个 的平均值Group
,然后得到这些平均值的最大值,最后选择Group
其平均值与步骤 2 中的结果值相同的那个。
proc sql;
select Group, avg(Num) as Mean
from test
group by Group
having Mean = (
select max(mean) from (
select avg(Num) as mean from test group by Group
)
)
;
quit;
是的,我得到了正确答案,它是“C”。但是我不喜欢这种方法,太冗长了。以下代码语法错误:
proc sql;
select Group, avg(Num) as Mean
from test
group by Group
having Mean = max(avg(Num))
;
quit;
但它更漂亮,也更短。你有没有更好的方法来做到这一点?
解决方案
您可以利用 SQLoutobs=
选项,利用降序排序。
proc sql outobs=1;
select group, mean(num) as num_mean
from test
group by group
order by num_mean desc
;
having
带有聚合函数 ( )的 SAS SQL子句max
将执行自动重新合并。
proc sql;
select Group, num_mean
from
(
select group, mean(num) as num_mean
from test group by group
)
having
num_mean = max(num_mean)
;
推荐阅读
- java - containsKey() 总是返回 true
- c# - 通过 system.io 扫描我的 C:\ 驱动器时出现问题
- build - 错误:CSS 缩小错误:JisonLexerError:第 1 行的词法错误:无法识别的文本
- javascript - VSCode 在调试时不运行修改过的文件
- python - 从Python中的字典列表中提取多个键/值对的最有效方法?
- python - 如何在 Python 中沿圆形路径粘贴图像?
- javascript - Javascript:一个对象怎么可能是假的?
- excel - 将 Excel SUMPRODUCT 与多条件 COUNTIF 相结合
- angular - Angular 错误页面组件使用带有 id 的路由而没有重定向
- animation - 使用按钮交互重放 ThreeJs 动画