<>sql字段去重

在从数据库中取数据或者进行数据清洗的过程中,经常会遇到去重复问题,常用的去重方法包括三种方式。接下来主要介绍常用的三种方式以及最优方法。

* distinct
* group by
* row_number() over()
<>需求分析

对下表中uid字段去重,并且把去重后所有字段输出。
---
<>distinct方法

* ditinct方法适合于单字段去重,但是单字段去重还要保留其他字段数据,就无法完成了;
* distinct对NULL是不进行过滤的,即返回的结果中是包含NULL值的;
* distinct应用到多个字段的时候,distinct必须放在开头,其应用的范围是其后面的所有字段 ---
<>group by 方法

* 对group by 后面所有字段去重,并不能只对一列去重;
* sql语句写成只对一列去重,保留其他字段,在hive上会报错
报错结果如下:
---
<>row_number() over()(该方法是hive sql去重的最佳方法)

* ROW_Number() over (partition by id order by time DESC)
给分组后的每个id加一列按某一字段倒叙排序的rank值,取rank=1 SELECT aa.uid,aa.org_name,aa.addr_no,
row_number() over (partition by aa.uid order BY aa.addr_no) as rn FROM stg.
t_018_doc_address_spec_organizationAS aa ) AS t WHERE t.rn =1
上述方法去重结果如下:
---

技术
今日推荐
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信