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
我需要对一个函数进行分组,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