Hive 从HQL中最大值(列)的表中选择值

Hive 从HQL中最大值(列)的表中选择值,hive,hql,reserved-words,Hive,Hql,Reserved Words,我对HQL还相当陌生,仍在尝试通过语法找到自己的方法。我有一张“得分表”,上面有球员ID和致胜球(GWG)。我想查看拥有最大GWG的玩家。这是我的疑问: select playerid as ID from scoring where gwg = ('select max(scoring.gwg) from scoring'); 虽然Hive打印列的名称,但我没有得到输出。但是当我硬编码'gwg=16'时,我得到了我需要的输出。有什么建议吗?我正在编写Hortonworks 2.3.2。你可

我对HQL还相当陌生,仍在尝试通过语法找到自己的方法。我有一张“得分表”,上面有球员ID和致胜球(GWG)。我想查看拥有最大GWG的玩家。这是我的疑问:

select playerid as ID from scoring where gwg = ('select max(scoring.gwg) from scoring'); 
虽然Hive打印列的名称,但我没有得到输出。但是当我硬编码'gwg=16'时,我得到了我需要的输出。有什么建议吗?我正在编写Hortonworks 2.3.2。

你可以试试这个

select playerid, max(scoring.gwg) from scoring group by playerid;
这是另一个

select playerid, max(scoring.gwg) as maxScore from scoring 
   group by playerid order by maxScore desc;
上面将按降序给出玩家ID,即得分最高的将位于顶部。

您可以尝试此操作

select playerid, max(scoring.gwg) from scoring group by playerid;
这是另一个

select playerid, max(scoring.gwg) as maxScore from scoring 
   group by playerid order by maxScore desc;

上面将按降序给出玩家ID,即得分最高的ID将位于顶部。

有几种方法可以做到这一点。 获取最大计数并使用最大gwg过滤playerid

select playerid
from scoring 
group by playerid 
having count(*) = ( select max(c) from 
                (
                   select playerid,count(*) c 
                   from scoring 
                   group by playerid
                ) a
              ) 
或者获取计数并按降序排序,然后获取最上面一行

select playerid, count(*) as cnt
from scoring 
group by playerid 
order by cnt desc
limit 1;

有两种方法可以做到这一点。 获取最大计数并使用最大gwg过滤playerid

select playerid
from scoring 
group by playerid 
having count(*) = ( select max(c) from 
                (
                   select playerid,count(*) c 
                   from scoring 
                   group by playerid
                ) a
              ) 
或者获取计数并按降序排序,然后获取最上面一行

select playerid, count(*) as cnt
from scoring 
group by playerid 
order by cnt desc
limit 1;

我想你所需要的只是这个简单的查询

select playerid,max(scoring.gwg) as max from scoring group by playerid order by max desc

配置单元不支持子查询。

我认为您所需要的只是这个简单的查询

select playerid,max(scoring.gwg) as max from scoring group by playerid order by max desc

配置单元不支持子查询。

子查询不应在引号内。它是一条语句,而不是字符串值。子查询不应包含在引号内。这是一条语句,不是字符串值。谢谢!但是现在我甚至在加载ambari登录页面时都遇到了问题,所以现在可以尝试一下了。一旦我把它整理好,我一定会尝试一下!Hi Abhijit,尽管查询可以工作,但它仍然没有给出最大值。我尝试了使用和不使用max的查询。我仍然得到相同数量的条目。我需要选择今年的最高分数,不管重复的球员。很抱歉,我在ambari中一直有一个读取时间错误,必须再次修复它。我还试图显示每年的产出。您建议的查询工作得很好,但当我添加“year”或group by year时,事情会变得混乱,我会得到重复的结果。这是我现在的查询:
选择max(gwg)作为gwg,playerid,根据playerid从评分组中选择年份,根据gwg desc选择年份顺序谢谢你!但是现在我甚至在加载ambari登录页面时都遇到了问题,所以现在可以尝试一下了。一旦我把它整理好,我一定会尝试一下!Hi Abhijit,尽管查询可以工作,但它仍然没有给出最大值。我尝试了使用和不使用max的查询。我仍然得到相同数量的条目。我需要选择今年的最高分数,不管重复的球员。很抱歉,我在ambari中一直有一个读取时间错误,必须再次修复它。我还试图显示每年的产出。您建议的查询工作得很好,但当我添加“year”或group by year时,事情会变得混乱,我会得到重复的结果。这是我现在的查询:
选择max(gwg)作为gwg,playerid,根据playerid从评分组中选择年份,根据gwg desc选择年份顺序谢谢。由于我的ambari登录页面未加载,我无法尝试此操作。我一修好就试试这个!非常感谢。由于我的ambari登录页面未加载,我无法尝试此操作。我一修好就试试这个!