无法使用配置单元聚合函数获取预期输出

2ledvvac  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(418)

我在hive中创建了一个表(movies),如下所示(id、name、year、rating、views) 1,The Nightmare Before Christmas,1993,3.9,4568 2,The Mummy,1932,3.5,4388 3,Orphans of the Storm,1921,3.2,9062 4,The Object of Beauty,1991,2.8,6150 5,Night Tide,1963,2.8,5126 6,One Magic Christmas,1985,3.8,5333 7,Muriel's Wedding,1994,3.5,6323 8,Mother's Boys,1994,3.4,5733 9,Nosferatu: Original Version,1929,3.5,5651 10,Nick of Time,1995,3.4,5333 我想编写一个配置单元查询来获取具有最高视图的电影的名称。
从电影中选择name,max(views);
但这给了我一个错误 FAILED: Error in semantic analysis: Line 1:7 Expression not in GROUP BY key name 但是使用name进行分组可以得到完整的列表(这是预期的)。我应该对我的查询做什么更改?

jecbmhm3

jecbmhm31#

经过一点点的挖掘,我发现答案并不像在sql中那么简单。下面的查询给出了预期的结果。 select a.name,a.views from movies a left semi join(select max(views) views from movies)b on (a.views=b.views);

pinkon5k

pinkon5k2#

很可能有一种更简单的方法可以做到这一点。

select name 
from(
    select max(views) as views
        , name
        , row_number() over (order by max(views) desc) as row_num 
    from movies  
    group by name
) m
where row_num = 1

相关问题