我有下表(播放器)列
playerId score teamId
此表包含所有球队的所有球员信息。playerid是主列。每个团队都包含多个玩家,因此teamid上有许多重复的值。分数是每个球员的分数。
我想编写一个配置单元sql来查询每个团队的max score player。下面是我尝试的查询:
select max(score) score, teamId from player group by teamId
这个查询可以正常工作,但它只显示teamid和最大得分。我也想查询playerid。如果在“选择”列中添加playerid,则会出现以下错误:
org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: SemanticException [Error 10002]: Line 1:32 Invalid column reference 'playerId'
看来我只能从分组中得到这个专栏了。如何编写查询来查找playerid?
2条答案
按热度按时间mctunoxg1#
在配置单元中,应使用窗口函数执行此操作:
单独进行聚合和连接是表达这种逻辑的“老”方法。在过去的几十年中,sql变得更加强大。
mutmk8jj2#
除非两个队员在同一个队中得分相同,否则这将起作用。在这种情况下,它将为该团队返回两行。