需要一种方法来过滤数据,以查找在配置单元中具有多个id记录的记录

b4lqfgs4  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(238)

在hive中考虑下表:

在这里,我需要找出家庭,车辆和客户的独特组合。但条件是,如果同一个家庭和车辆有两个不同的客户,角色是司机和车主,我必须考虑车主。但是,如果一个家庭和一辆车只有一个客户,如果这个客户是司机或车主,我也必须考虑这个记录。我需要Hive查询。
结果如下表所示:

有人能帮帮我吗?

nuypyhwy

nuypyhwy1#

基本上你要找的是一个top-n窗口函数查询,在你的例子中n是1。您可以使用rank函数编写一个配置单元查询,并附加一个“limit1”子句来实现您想要的结果。请参阅配置单元中的秩函数以开始。
您可以在这里找到一个简单的示例—配置单元—组中的前n个记录

w7t8yxp5

w7t8yxp52#

这很有用,试试看this:-

select Household,Vehicle,Customer,Cust_role from (select *,row_number() 
over (partition by Household,Vehicle order by Cust_role desc) rn from test_table) tableouter where rn=1;

output:-

I       1       A       OWNER
II      2       C       DRIVER
III     3       D       OWNER
IV      4       E       OWNER

相关问题