在SQL中,我们按

select deptno, count(*) c from emp group by deptno;

DEPTNO C
------ -
10     3
20     5
30     6

select deptno, count(*) over (partition by deptno) c from emp;


DEPTNO C
------ -
10     3
10     3
10     3
20     5
20     5
20     5
20     5
20     5
30     6
30     6
30     6
30     6
30     6
30     6
进行分区和分组
如果我们需要在HIVE中实践同样的事情,那将是一个选择。
我们在Hive中有相同的东西吗?
请建议
提前致谢。

最佳答案

Hive支持窗口功能,请参阅Windowing and Analytics Functions。所以实际上就是您发布的内容:

select deptno, count(*) over (partition by deptno) c from emp;

诀窍是您需要使用最新的Hive才能拥有开窗功能。链接的页面显示了这些是在Hive 0.11中引入的。

至于第一个查询select deptno, count(*) c from emp group by deptno;只是一个普通的聚合,我认为在v.-1中受支持...

关于sql - 在Hive中查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21427691/

10-10 03:04