如何在HIVE中找到最长的时间

时间:2018-12-24 20:57:44

标签: hadoop hive

我在蜂巢逻辑中没有什么问题。我需要在数据集中找到最长的客户。我的数据集中包含以下值

customer       time
 cust 1        8:01
 cust 1        8:02
 cust 2        8:02
 cust 2        8:03
 cust 2        8:04
 cust 2        8:05
 cust 3        8:02
 cust 3        8:03

在我的示例中,根据客户2的总工作时间,客户2的最长。 cust 1的总计数为2,cust 2的计数为4,而cust 3的计数为2。我的问题在8:01到8:05之间出现,最长的持续时间属于cust 2。因此,结果2会出现。我该如何实现这种逻辑。

请帮助

注意:需要无限制操作的解决方案

2 个答案:

答案 0 :(得分:1)

类似这样的东西:

select customer
from t
where time >= '8:01' and time <= '8:05'
group by customer
order by count(*) desc
limit 1;

答案 1 :(得分:0)

我认为这将提供理想的

    Select distinct customer from table where 
     (distinct time) = (select max(distinct time) from table)

或者如果您希望按组减少

         Select  customer from( 
           (Select customer,(max(time)-
         min(time)) as time_diff
          from table group by customer
         order by time_diff desc LIMIT 1)
          ;