当前位置: 代码网 > it编程>数据库>大数据 > Hive数据去重的两种方式 (distinct和group by)

Hive数据去重的两种方式 (distinct和group by)

2024年05月19日 大数据 我要评论
实现数据去重有两种方式 :distinct 和 group by1.distinct消除重复行distinct支持单列、多列的去重方式。单列去重的方式简明易懂,即相同值只保留1个。多列的去重则是根据指

实现数据去重有两种方式 :distinct 和 group by

1.distinct消除重复行

distinct支持单列、多列的去重方式。

单列去重的方式简明易懂,即相同值只保留1个。

多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。

(1)作用于单列

  select distinct name from a    //对a表的name去重然后显示

(2)作用于多列

  select distinct id,name from a   //对a表的id和name去重然后显示

注意,distinct作用于多列的时候只在开头加上即可,并不用每个字段都加上。

     distinct必须在开头,在中间是不可以的,会报错。

  select id,distinct name from a   //错误

(3)配合count使用

  select count(distinct name) from a  //对a表的不同的name进行计数

2.group by 分组语句

    select name from a group by name   //跟上述等价,对name分组,相当于去重。

    在使用group by的时候,前边一般会有聚合语句,例如sum,一些没有聚合的字段必须要加到group by 后边。

   select a,sum(b) from a group by a   //后边必须要有a,否则报错  

3.区别

 其实二者没有什么可比性,但是对于不包含聚集函数的group by操作来说,和distinct操作是等价的。不过虽然二者的结果是一样的,但是二者的执行计划并不相同。

 distinct只是将重复的行从结果中出去; 

 group by是按指定的列分组,一般这时在select中会用到聚合函数。

 distinct是把不同的记录显示出来。 

 group by是在查询时先把纪录按照类别分出来再查询。

 group by 必须在查询结果中包含一个聚集函数,而distinct不用。

总结

到此这篇关于hive数据去重的两种方式的文章就介绍到这了,更多相关hive数据去重内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com