【问题标题】:HIVE/HiveQL Get Max countHIVE/HiveQL 获取最大计数
【发布时间】:2016-04-22 05:29:07
【问题描述】:

样本数据

   DATE      WindDirection

   1/1/2000  SW
   1/2/2000  SW
   1/3/2000  SW
   1/4/2000  NW
   1/5/2000  NW

下面的问题

每天都是unqiue,风向也不是唯一的,所以现在我们正在尝试获取最常见的风向的COUNT

select w.wind_direction as most_common_wd
from (
       select wind_direction, count(*) as cnt
       from weather 
       group by wind_direction 
       order by cnt desc
) w
limit 1;

目前这个查询有效,但是它输出所有计数的计数,我只对每种风向的计数感兴趣,它输出南并输出 170000 但答案只有 10,000。

我知道使用 count 的方式有问题,我认为它必须指定别名并按特定的 wind_direction 进行计数,但我无法将其转换为语法

【问题讨论】:

  • 请编辑您的问题并包含样本数据和所需结果。
  • 我相信我昨天已经回答了类似的帖子。添加select distinct w.wind_direction as most_common_wd, cnt from (...应该可以,你可以去掉limit 1
  • 问题标题说您希望按标准计数,但在问题正文中您提到您有兴趣获取每个风向的计数。请更正问题并提供示例数据、您尝试过的脚本和所需的输出。
  • @inquisitive_mind 在这里谢谢你

标签: hadoop hive hiveql apache-hive


【解决方案1】:

您似乎想要从数据中获得最常见的风向

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

如果有多个风向具有相同的最大计数,则获取最大计数并在having clause 中使用以获取最常见的风向

select wind_direction 
from weather 
group by wind_direction 
having count(*) = ( select max(c) from 
                    (
                       select wind_direction,count(*) c 
                       from weather 
                       group by wind_direction 
                    ) a
                  ) 

【讨论】:

  • 谢谢你,你写的第一个蜂巢查询与你在猪的这个链接中提供的那个是同义的,对吗? stackoverflow.com/questions/36753093/…
  • 谢谢!很清楚,我正在尝试学习猪和蜂巢。连接和子查询让我失望
猜你喜欢
  • 1970-01-01
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多