【Hive】数据去重 |
您所在的位置:网站首页 › hive两个表关联去除重复数据 › 【Hive】数据去重 |
实现数据去重有两种方式 :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不用。
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |