我在蜂巢中有一个分区表。模式和示例如下所示
item_id | price | brand | partition_id
AX_12 340.22 Apple. 356
AZ_47 230.00 Samsung 357
AX_12 321.00. Apple. 357
AQ_17. 125.00 Lenovo. 356
如果一个项目存在于多个分区中。我需要选择具有最新分区的行 因此,此示例的预期输出是
item_id | price | brand | partition_id
AX_12 321.00 Apple. 357
AZ_47 230.00 Samsung 357
AQ_17. 125.00 Lenovo. 356
表中有10个分区,每个分区有1000万行
答案 0 :(得分:0)
您可以使用窗口功能对每个组的顶部记录进行过滤:
select t.*
from (
select t.*, row_number() over(partition by item_id order by partition_id desc) rn
from mytable t
)
where rn = 1
典型的替代方法是使用相关子查询进行过滤:
select t.*
from mytable t
where t.partition_id = (
select max(t1.partition_id) from mytbale t1 where t1.item_id = t.item_id
)