按问题分组 GreenPlum

Group by Issue GreenPlum

我想在约 300 列的 table 中进行分组。 有订单,它们的状态会在接下来的 30 天内更新。 我想选择最大(update_time)的订单。 所以我的查询是这样的:

select order_num,status,order_date,max(update_date)     from orders
where order_date = '2021-07-01'
     and update_date between '2021-07-01' and '2021-08-01'
 group by 'primary_key';

有没有办法在不对所有 300 列添加聚合函数的情况下编写查询?

I want to pick the order with the max(update_time).

我想你想要:

select o.*
from orders o
order by o.update_time
offset 0 row fetch first 1 row only;

fetch first 子句仅获取一行。您没有指定数据库,但您的数据库可能使用 limitselect top 或其他名称。

您正在寻找这个:

select * from (
   select * , row_number() over (partition by order_num order by update_date desc) rn
   from orders
) t
where rn = 1;