【问题标题】:How to order by count desc in each group in a hive?如何按蜂巢中每个组中的计数顺序排序?
【发布时间】:2013-12-05 03:45:05
【问题描述】:

这是 HQL:

select A, B, count(*) as cnt from test_table group by A, B order by cnt desc;

示例输出如下:

a1 | b1 | 5
a2 | b1 | 3
a1 | b2 | 2
a2 | b2 | 1

但我想要的是在每组A中做order by,预期的输出是这样的:

a1 | b1 | 5
a1 | b2 | 2
a2 | b1 | 3
a2 | b2 | 1

谁能告诉我如何在一个 HQL 中解决这个问题?非常感谢!

【问题讨论】:

    标签: group-by hql hive


    【解决方案1】:
    select A, B, count(*) as cnt 
    from test_table 
    group by A, B 
    order by A, cnt desc;
    

    【讨论】:

      【解决方案2】:

      试试这个查询:

      如果你只想要 A 的顺序,那么:

      select A, B, count(*) as cnt from test_table group by A, B order by A asc;
      

      如果你想要 A 和 B 的顺序,那么:

      select A, B, count(*) as cnt from test_table group by A, B order by A asc,B asc;
      

      希望这会有所帮助。

      【讨论】:

      • 对不起,这不是我想要的。我打算在结果的每个子组中按计数进行排序。正如你在我的帖子中看到的那样。无论如何谢谢:)
      【解决方案3】:
      select A, B, count(*) as cnt from test_table group by A, B order by A asc, B asc, cnt desc;
      

      【讨论】:

      猜你喜欢
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多