当前位置: 去除器 >> 去除器市场 >> SQL中去除重复数据的几种方法,我一次性
使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,需要我们对数据进行去重后分析。
以某电商公司的销售报表为例,常见的去重方法我们用到groupby或者distinct语句,今天介绍一种新的方法,利用窗口函数对数据去重。
访客id:进入店铺浏览宝贝的客户
浏览时间:访客进入店铺浏览页面的日期
浏览时常:访客进入店铺浏览页面的时长
现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算做一次记录)
方法1:groupby
SQL书写如下:
1select访客id,浏览时间2from淘宝日销售数据表3groupby访客id,浏览时间;
查询结果:
groupby对访客id和浏览时间进行分组,分组汇总后改变了表的行数,一行只有一个类别,这里使用groupby后会将访客id和浏览时间作为一个类别保留,重复的就会不显示。
方法2:distinct
SQL书写如下:
1selectdistinct访客id,浏览时间2from淘宝日销售数据表;
查询结果:
这里用distinct语句多字段进行去重的时候,需要特别注意2点:
1)distinct语法规定对单字段、多字段去重,必须放在第一个查询字段前。
2)如果对表中多列字段进行去重,去重的过程就是将多字段作为整体去重,比如上面的例子,我们将访客id和浏览时间为整体去去重,而不是对访客id单独去重后再对姓名单独去重,所以会出现相同的访客id对应不同的浏览时间。
方法3:窗口函数
使用窗口函数进行去重时,比distinct和groupby稍微复杂些,窗口函数不会减少原表中的行数,而是对字段进行分组后排序。详细的窗口函数讲解(
转载请注明:http://www.aideyishus.com/lkjg/8533.html