Greoupby With Max() 条件 SQL Teradata

Greoupby With Max() condition SQL Teradata

我需要对一个函数进行分组,return 仅对我选择的每个变量具有最大值的行进行分组。 在这种情况下,变量是 user_id 和 task.

我的输入显示在下面的 table 中:

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

然后我应用下面的查询。

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

但是我的目标是下面的 table,但它无法正常工作。

user_id task    mx
123456  expecd  4.85
789101  Packing 3.17

能否指导我找到解决方案?

您想要每个 user_id 中具有最大 mx 的行。

在 Teradata 中,您可以使用 row_number()qualify 来解决这个 greatest-n-per-group 问题。

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