数据:
ID step order
100 1 1
100 2 2
100 3 3
100 1 4
200 2 5
200 3 6
200 1 7
期望的结果(我想获得每组中上面的最大行数)
ID step max_step
100 1 1
100 2 2
100 3 3
100 1 3
200 2 2
200 3 3
200 1 3
非常感谢!:)
答案 0 :(得分:1)
如果您的数据库支持窗口聚合,那么
SELECT id,
step,
Max(step) OVER( partition BY ID ORDER BY "order") as max_step
From yourtable
如果您希望从上面的行中获得最大步数而不考虑ID
,请删除partition by
SELECT id,
step,
Max(step) OVER(ORDER BY "order") as max_step
From yourtable
答案 1 :(得分:0)
如果你想对行顺序有所了解,那么SAS将是更简单的答案。
data want;
set have;
by ID;
retain max_step;
if first.id then call missing(max_step);
max_step = max(step,max_step);
run;
答案 2 :(得分:0)
您需要累积最大值:
max(step)
over(partition by id
order by ordercol
rows unbounded preceding)
由于Teradata不遵循默认为range unbounded preceding
的标准SQL,您需要添加它(无论如何都是这样)。
只有last_value
默认为累积:
last_value(step)
over(partition by id
order by ordercol)
当然,您也可以添加rows unbounded preceding
。