使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,需要我们对数据进行去重后分析。
以某电商公司的销售报表为例,常见的去重方法我们用到distinct 或者group by 语句, 今天介绍一种新的方法,利用窗口函数对数据去重。
【资料图】
【字段解释】
访客id:进入店铺浏览宝贝的客户
浏览时间:访客进入店铺浏览页面的日期
浏览时常:访客进入店铺浏览页面的时长
现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算做一次记录)
【解题思路】
SQL书写如下:
select distinct 访客id ,浏览时间 from 淘宝日销售数据表;
查询结果:
这里用distinct语句多字段进行去重的时候,需要特别注意2点:
1)distinct语法规定对单字段、多字段去重,必须放在第一个查询字段前。
2)如果对表中多列字段进行去重,去重的过程就是将多字段作为整体去重,比如上面的例子,我们将访客id和浏览时间为整体去去重,而不是对访客id单独去重后再对姓名单独去重,所以会出现相同的访客id对应不同的浏览时间。
SQL书写如下:
select 访客id ,浏览时间 from 淘宝日销售数据表 group by 访客id ,浏览时间;
查询结果:
group by对访客id 和浏览时间进行分组,分组汇总后改变了表的行数,一行只有一个类别,这里使用group by后会将访客id 和浏览时间作为一个类别保留,重复的就会不显示。
使用窗口函数进行去重时,比distinct和group by稍微复杂些,窗口函数不会减少原表中的行数,而是对字段进行分组后排序。详细的窗口函数讲解
窗口函数的基本语法如下:
<窗口函数> over (partition by <用于分组的列名> order by <用于排序的列名>)
根据题目要求得出每个访客和对应的浏览日期,我们对访客id ,浏览时间进行分组,对浏览时长(秒)进行排序。
SQL书写如下:
select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间 order by 浏览时长(秒)) as 排名 from 淘宝日销售数据表;
查询结果:
窗口函数查询按照每个客户和浏览日期分组,如果同一天有几次浏览,会根据点赞数排序,筛选排名为1,即可得出每个访客和对应的浏览日期。
SQL书写如下:
select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间 order by 浏览时长(秒)) as 排名 from 淘宝日销售数据表;
查询结果:
去除重复项的三种操作,你get了吗?欢迎评论区补充你的去重办法~
到此这篇关于SQL中去除重复数据的几种方法,我一次性都告你的文章就介绍到这了,更多相关sql去除重复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
下一篇:最后一页
以某电商公司的销售报表为例,常见的去重方法我们用到distinct或者groupby语句,今天介绍一种新的方法,利
2023年以来的土地市场暖意渐增。据研究机构克而瑞数据,4月份土地市场的溢价率水平维持在7 2%的相对高位;
连哭都是我的错歌词,跪求连哭都是我的错歌词很多人还不知道,现在让我们一起来看看吧!1、分手到底是不是
截至2023年5月5日收盘,江苏新能(603693)报收于12 73元,上涨0 47%,换手率0 48%,成交量3 84万手,成交额4866 18万元。
▲民警在给学生上防溺水课。摄影|江西日报全媒体记者付强江西新闻客户端讯(江西日报全媒体记者付强通讯员
来源:驱动之家快科技5月5日消息,今天苹果发布了2023财年第二财季业绩,总净营收为948 36亿美元,与去年同
“‘北跨’发展,建设有我。紧盯目标,使命必达!”5月5日下午,一声声坚定而有力的誓词回荡在西安地铁10号
牧原股份公告4月份公司销售生猪5342万头销售收入9106亿元4月份公司商品猪价格相比2023年3月份呈现下降趋势
5月5日,中国神华(601088 SH)业绩说明会上,公司执行董事、党委书记、副总经理许明军表示,未来三年,公
1、你可以在开机按F8选择带命令模式进然后出来命令提示符你就输入regedit打开注册表系统资源不足用以下方式可