HIVE点滴:group by和distinct语句的执行顺序

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/elecjack/article/details/51883585

同一条语句之中,如果同时有group by和distinct语句,是先group by后distinct,还是先distinct后group by呢?

先说结论:先group by后distinct。

 

以下是在HIVE中的验证:

1)建表:其中xxx替换为本地目录名

create external table tmp_tb(
id int,
content int
) row format delimited
fields terminated by ','
stored as textfile
location '/tmp/xxx';
 

2)从tmp_tb文件中导入数据

load data
local inpath '/home/xxx/tmp_tb'
overwrite into table tmp_tb;
 tmp_tb内容:

1,5

2,6

2,5

2,5

3,6

 

3)仅有group by时:

select id, count(content)
from tmp_tb
group by id;
结果如下:

1 1

2 3

3 1

 

4)同时有group by和distinct时:

select id, count(distinct content)
from tmp_tb
group by id;

结果如下:

1 1

2 2

3 1

 

可见,同时有group by和distinct时,显然是先group by 后distinct。如果是先distinct,后group by,则结果应该只有两条记录,因为content只有5和6两种数值。

展开阅读全文

没有更多推荐了,返回首页