按问题分组 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
子句仅获取一行。您没有指定数据库,但您的数据库可能使用 limit
或 select top
或其他名称。
您正在寻找这个:
select * from (
select * , row_number() over (partition by order_num order by update_date desc) rn
from orders
) t
where rn = 1;
我想在约 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
子句仅获取一行。您没有指定数据库,但您的数据库可能使用 limit
或 select top
或其他名称。
您正在寻找这个:
select * from (
select * , row_number() over (partition by order_num order by update_date desc) rn
from orders
) t
where rn = 1;