SQL中去除重复数据的几种方法,我一次性都告诉你​

这篇具有很好参考价值的文章主要介绍了SQL中去除重复数据的几种方法,我一次性都告诉你​。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQL中去除重复数据的几种方法,我一次性都告诉你​

使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,需要我们对数据进行去重后分析。

以某电商公司的销售报表为例,常见的去重方法我们用到distinct 或者group by 语句, 今天介绍一种新的方法,利用窗口函数对数据去重。

SQL中去除重复数据的几种方法,我一次性都告诉你​

【字段解释】

访客id:进入店铺浏览宝贝的客户

浏览时间:访客进入店铺浏览页面的日期

浏览时常:访客进入店铺浏览页面的时长

现在需要知道店铺里每个访客和对应的浏览日期(每个访客同一天浏览多次算做一次记录)

【解题思路】

方法1:distinct

SQL书写如下:

select distinct 访客id ,浏览时间 
     from 淘宝日销售数据表;

查询结果:

SQL中去除重复数据的几种方法,我一次性都告诉你​

这里用distinct语句多字段进行去重的时候,需要特别注意2点:

1)distinct语法规定对单字段、多字段去重,必须放在第一个查询字段前。

2)如果对表中多列字段进行去重,去重的过程就是将多字段作为整体去重,比如上面的例子,我们将访客id和浏览时间为整体去去重,而不是对访客id单独去重后再对姓名单独去重,所以会出现相同的访客id对应不同的浏览时间。

方法2:group by

SQL书写如下:

select 访客id ,浏览时间
     from 淘宝日销售数据表
group by 访客id ,浏览时间;

查询结果:

SQL中去除重复数据的几种方法,我一次性都告诉你​

group by对访客id 和浏览时间进行分组,分组汇总后改变了表的行数,一行只有一个类别,这里使用group by后会将访客id 和浏览时间作为一个类别保留,重复的就会不显示。

方法3:窗口函数

使用窗口函数进行去重时,比distinct和group by稍微复杂些,窗口函数不会减少原表中的行数,而是对字段进行分组后排序。详细的窗口函数讲解(请点击-通俗易懂的学会:SQL窗口函数)

窗口函数的基本语法如下:

<窗口函数> over (partition by <用于分组的列名>
                order by <用于排序的列名>)

根据题目要求得出每个访客和对应的浏览日期,我们对访客id ,浏览时间进行分组,对浏览时长(秒)进行排序。

SQL书写如下:

select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间
order by 浏览时长(秒)) as 排名
     from 淘宝日销售数据表;

查询结果:

SQL中去除重复数据的几种方法,我一次性都告诉你​

窗口函数查询按照每个客户和浏览日期分组,如果同一天有几次浏览,会根据点赞数排序,筛选排名为1,即可得出每个访客和对应的浏览日期。

SQL书写如下:

select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间
order by 浏览时长(秒)) as 排名
     from 淘宝日销售数据表;

查询结果:

SQL中去除重复数据的几种方法,我一次性都告诉你​

去除重复项的三种操作,你get了吗?欢迎评论区补充你的去重办法~

SQL中去除重复数据的几种方法,我一次性都告诉你​

 ⬇️点击「阅读原文」

 免费报名 数据分析训练营文章来源地址https://www.toymoban.com/news/detail-464424.html

到了这里,关于SQL中去除重复数据的几种方法,我一次性都告诉你​的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 玩机搞机---修改系统固件不开机 安卓13去除系统app签名验证的几种方法

        谷歌在安卓13中对系统应用添加了一层校验验证,你如果修改了系统app.那么原有的签名加载后过不去验证,会导致进不去系统卡第一屏或者进入系统后修改的app错误等等故障。 Android 13增加了新的apk签名校验机制,现在开机中它会对所有系统分区(可能包括system、system_

    2024年02月12日
    浏览(57)
  • DBeaver一次性执行mysql多条sql

    最新开始弃用Navicat,改用dbeaver,DBeaver需要Java语言支持,所以安装之前需要配置JDK环境; 再使用DBeaver执行多个SQL语句时(语句已使用;分隔)报错: 一、选中多条sql语句后,使用快捷键:alt+x 执行,即可; 二、在DBeaver的 连接设置中 驱动属性 中 allowMultiQueries 从 默认的fal

    2024年02月11日
    浏览(70)
  • 【已解决】MySQL(Navicat)中如何一次性执行多个sql脚本文件

    目录 问题现象: 问题分析: 思路: 解决方法:         1、运行cmd命令窗口         2、执行文本文件内容合并命令 总结:         1、使用文本文件内容合并命令,将多个sql脚本文件的内容合并到一个新的sql文件中去。         2、然后在Navicat中打开对应数据库,运行

    2024年03月20日
    浏览(139)
  • sql中删除数据的几种方式

    1、delete语句 Delete删除表数据,保留表结构,且可以加where,删除一行或多行。 只清除数据,保留表结构,列,权限,索引,视图,关系等等,相当于清零数据,是一种数据库定义语言(DDL Data Definition Language),执行后不能撤销。 清除数据并且销毁表,是一种数据库定义语言

    2024年02月11日
    浏览(44)
  • js去除字符串空格的几种方式

    方法1: (最常用)全部去除掉空格  var str = \\\'  abc d e f  g \\\';         function trim(str) {             var reg = /[trfns]*/g;             if (typeof str === \\\'string\\\') {                 var trimStr = str.replace(reg,\\\'\\\');             }             console.log(trimStr)         }         trim(str) 方

    2024年02月09日
    浏览(47)
  • sql数据库去重的几种情况

    本文主要总结数据库去掉重复数据的方法 去掉重复数据的方法: 第一种:distinct 根据单个字段去重,能精确去重; 作用在多个字段时,只有当这几个字段的完全相同时,才能去重; distinct只能放在SQL语句中的第一个,才会起作用 上图举例说明:图中student_name 为 tes

    2024年02月12日
    浏览(45)
  • mysql:IN最多只能查询1000个,如果要一次性查询出来,使用以下sql实现

    1、 if test=\\\"(index % 999) == 998\\\" :余数等于998,将,置为NULL SELECT mph.PO_HEADER_ID, mph.PO_NUMBER, mid.INSTRUCTION_DOC_STATUS, mid.INSTRUCTION_DOC_NUM FROM mt_po_header mph LEFT JOIN mt_instruction mi ON mi.SOURCE_ORDER_ID = mph.PO_HEADER_ID LEFT JOIN mt_instruction_doc mid ON mid.INSTRUCTION_DOC_ID = mi.SOURCE_DOC_ID WHERE mph.TENANT_ID = 7 AND

    2023年04月09日
    浏览(64)
  • [Anonymous GitHub]代码下载方法,一次性全下载

    工具分享: https://github.com/kynehc/clone_anonymous_github​github.com/kynehc/clone_anonymous_github 注意: 下载链接格式一定要确保结尾有个/ 注意: 下载链接格式要弄成readme之前的链接:例如下面的链接: https://anonymous.4open.science/r/GraphCL-7105/README.md/ 你应该写为:  https://anonymous.4open.scienc

    2024年02月13日
    浏览(48)
  • JavaScript中数据过滤的几种方法

    JavaScript是一种广泛使用的编程语言,它提供了多种方法来对数据进行过滤。在本文中,我们将介绍JavaScript中常见的几种数据过滤方法,并提供相应的示例。 filter()方法是JavaScript数组对象的一个内置方法,它创建一个新数组,其中包含符合指定条件的所有元素。该方法接受一

    2024年02月04日
    浏览(60)
  • Visual Studio 2022 中使用scanf报错的解决方法(一次性解决)

    🎬 鸽芷咕 :个人主页  🔥 个人专栏 :《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活!    🌈 hello! 各位宝子们大家好啊,前面一章给大家介绍了Visual Studio 2022 的安装和使用!    ⛳️ 但是 Visual Studio 2022 并不是按照标准的C语言标准,所以使

    2024年02月16日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包