Select 更高的价值
Select higher value
我有这个数据集:
Var1 t avg
AA 1 0.02
AA 0 0.21
BB 1 0.05
BB 0 0.20
CC 1 0.10
CC 0 0.14
构建如下
Proc sql;
Select
Var1,
t,
Avg(var2) as avg
From my_data
Group by 1,2
Order by 1,2; quit;
我的预期输出是
AA 0 0.21
BB 0 0.20
CC 0 0.14
你能给我一些提示吗?
我一直在使用 max 函数来做这件事。我会尝试将问题分为两步:第一个 select 每个组(AA、BB 和 CC)的较高值,然后我将 select 这些值之间的最大值。不知道这个做法对不对
如果您只想要平均值最高的一行,请使用 top
:
Select top 1 Var1, t, Avg(var2) as avg
From my_data
Group by 1,2
Order by avg desc;
如果您想要此 per t
,则使用 qualify
和 row_number()
:
select Var1, t, Avg(var2) as avg
from my_data
group by 1,2
qualify row_number() over (partition by var1 order by avg desc) = 1;
我有这个数据集:
Var1 t avg
AA 1 0.02
AA 0 0.21
BB 1 0.05
BB 0 0.20
CC 1 0.10
CC 0 0.14
构建如下
Proc sql;
Select
Var1,
t,
Avg(var2) as avg
From my_data
Group by 1,2
Order by 1,2; quit;
我的预期输出是
AA 0 0.21
BB 0 0.20
CC 0 0.14
你能给我一些提示吗? 我一直在使用 max 函数来做这件事。我会尝试将问题分为两步:第一个 select 每个组(AA、BB 和 CC)的较高值,然后我将 select 这些值之间的最大值。不知道这个做法对不对
如果您只想要平均值最高的一行,请使用 top
:
Select top 1 Var1, t, Avg(var2) as avg
From my_data
Group by 1,2
Order by avg desc;
如果您想要此 per t
,则使用 qualify
和 row_number()
:
select Var1, t, Avg(var2) as avg
from my_data
group by 1,2
qualify row_number() over (partition by var1 order by avg desc) = 1;