日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Hive數據去重的兩種方式?(distinct和group?by)_數據庫其它

作者:zzhangyuhang ? 更新時間: 2023-02-07 編程語言

實現數據去重有兩種方式 :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不用。

總結

原文鏈接:https://www.cnblogs.com/zzhangyuhang/p/8778952.html

欄目分類
最近更新