具有Max条件的Greoupby条件SQL Teradata

问题描述

我需要对函数进行分组,并且只返回对于我选择的每个变量具有最大值的行。 在这种情况下,变量是user_id和task。

我的输入如下表所示:

@H_502_5@user_id task    mx
123456  expecd  4.85
789101  Packing 3.17
123456  Packing 1.50
789101  receiv  0.08

我在下面应用查询

@H_502_5@select user_id,task,max(time_sum) as mx
from process
group by user_id,task) with data on commit preserve rows;

但是获取下表的目标是行不通的。

@H_502_5@user_id task    mx
123456  expecd  4.85
789101  Packing 3.17

您能指导我寻求解决方案吗?

解决方法

您希望每个mx的行user_id最大。

在Teradata中,您可以使用row_number()qualify解决这个最大的每组问题。

select t.*
from mytable t
qualify row_number() over(partition by user_id order by mx desc) = 1