• 自动秒收录
  • 软件:1973
  • 资讯:56215|
  • 收录网站:181187|

IT精英团

SQL中的三种重复数据删除方法 还有谁不行?

SQL中的三种重复数据删除方法 还有谁不行?

浏览次数:
评论次数:
编辑: 阳煦
信息来源: ITPUB
更新日期: 2022-05-16 21:05:53
摘要

SQL去重是数据分析工作中比较常见的一个场景,今天给大家具体介绍3种去重的方法。在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到uv(独立访客),就需要做去重。在MySQL中

  • 正文开始
  • 相关阅读
  • 推荐作品

SQL重复数据删除是数据分析中的常见场景。今天,我们将介绍三种重复数据消除方法。

在使用SQL提取数据时,我们经常会遇到表中的重复值。例如,如果我们想要获得uv(独立访问者),我们需要进行重复数据删除。

在Mysql中,通常使用distinct或group by子句,但在支持窗口函数的sql(如Hive SQL、Oracle等)中。),row_number窗口函数也可用于重复数据删除。

举个栗子,还有这样一个表任务:

备注:

Task_id:任务id;

Order_id:订单id;

Start_time:开始时间

注意:一个任务对应多个订单。

我们需要找到任务的总数,因为task_id不是唯一的,所以我们需要消除重复:

distinct

-列出task_id的所有唯一值(重复数据删除后的记录)

- selectdistincttask_id

-from task;

-任务总数

selectcount(distincttask_id)任务编号

fromTask

Distinct通常效率很低。它不适合显示重复数据删除后的具体值,通常与count一起使用来计算条形数。

当使用distinct时,它被放置在select之后,并且它后面的所有字段的值被统一进行重复数据消除。例如,如果distinct之后有两个字段,则两条记录1,1和1,2不是重复值。

group by

-列出task_id的所有唯一值(重复数据删除后的记录,null也是一个值)

-选择任务标识

-来自任务

-group by task _ id;

-任务总数

selectcount(任务标识)任务编号

从(选择任务标识号

来自任务

group bytask _ id)tmp;

row_number

Row_number是一个窗口函数,语法如下:row _ number()over(partition by的字段名用于分组,order by的字段名用于组内排序),其中partition by部分可以省略。-在支持窗口函数的sql中使用

select count(casewhenrn=1 tentask _ idelsenullend)task _ num

从(选择任务标识号

,row _ number()over(partitionbytask _ idorderbystart _ time)rn

from task)tmp;

此外,表测试用于管理去加权中distinct和group by的使用:

-底部的分号;用于分隔行。

选择distinctuser_id

fromTest-返回1;2

selectdistinctuser用户标识,用户类型

fromTest-返回1,1;1,2;2,1

选择用户标识

来自测试

groupbyuser _ id-返回1;2

选择用户标识,用户类型

来自测试

groupbyuser_id,user _ type-返回1,1;1,2;2,1

选择用户标识,用户类型

来自测试

groupbyuser _ id

- Hive,Oracle等。将报告错误。mysql可以这样写。

-返回1,1或1,2;2,1(共两行)。只有group by之后的字段才会重复,也就是说最终返回的记录数等于前面sql中的记录数,也就是两条记录。

-不放在groupby之后而是放在select中的字段将只返回一条记录(就好像它通常是第一条记录,这应该是不规则的)

blog.csdn.net/xienan_ds_zj/article/details/103869048

标签:字段 任务 函数
记得网上一个K8s Ingress访问故障排除 最后却不是帖子的锅
« 上一篇 2022-05-16
脸书数据库项目负责人:我从做基础设施中学到的42件事
下一篇 » 2022-05-16
  • 胡迪核心知识点详解(好文章合集)
    1阅读 0条评论 个赞
    以下文章来源于公众号-3分钟秒懂大数据,作者在IT中穿梭旅行在Flink实时流中,经常会通过FlinkCDC插件读取Mysql数据,然后写入Hudi中。所以在执行上述操作时,需要了解……
  • 前端面试必须解决网络中的跨域问题
    0阅读 0条评论 个赞
    什么是跨域浏览器有一个重要的安全策略,称之为「同源策略」其中,源=协议+主机+端口源=协议+主机+端口源=协议+主机+端口,两个源相同,称之为同源,两个源不同,称之为跨源或跨域比如:源1源2是否同……
  • 如何在Bash脚本中使用强大的Linux测试命令
    0阅读 0条评论 个赞
    Linuxtest命令是Shell内置命令,用来检测某个条件是否成立。test通常和if语句一起使用,并且大部分if语句都依赖test。可以将一个元素与另一个元素进行比较,但它更常……
  • 真正的建筑设计是什么样子的?
    1阅读 0条评论 个赞
    什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的……
  • 10分钟了解云原生 值得收藏~
    0阅读 0条评论 个赞
    文章转载:奇妙的Linux世界我们已经进入云计算下半场,不再像上半场在纠结要不要上云,而是讨论怎么上云?才能把云计算的价值发挥到淋漓尽致。如何把云计算与不同的业务场景深度结合?如何让技术真正作用于企业……
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
  • MySQL查询语句的limit offset是如何实现的?
    1阅读 0条评论 个赞
    在写select语句的时候,使用limit,offset可能就像是我们吃饭喝水一样自然了。刚开始工作的时候也经常听前辈们教导:使用limit,offset,当offset变大的时候执……
  • Java“年度加密漏洞”修复 网友:更多坚持Java 8的理由
    9阅读 0条评论 个赞
    文|Travis出品|OSC开源社区(ID:oschina2013)甲骨文于昨日推送了安全更新修复了一个漏洞,该漏洞允许攻击者伪造某些种类的SSL证书和握手、双因素认证信息,以及由一系列广……
  • 一万字长文讲解HBase读写性能优化
    2阅读 0条评论 个赞
    一、HBase读优化1.HBase客户端优化和大多数系统一样,客户端作为业务读写的入口,姿势使用不正确通常会导致本业务读延迟较高实际上存在一些使用姿势的推荐用法,这里一般需要关注四个问题:1)s……
  • 数据治理 区分系统、机制、流程的概念很重要
    0阅读 0条评论 个赞
    以下文章来源于公众号-大鱼的数据人生,作者讨厌的大鱼先生我们刚接触数据的时候,从事的大多是具体的数据管理活动,无论是数据的采集、开发和开放,或是元数据管理、数据质量管理或是数据安全管理等等,但当你想更……
  • 40幅最完整的计算机网络思维导图
    1阅读 0条评论 个赞
    传输介质简介以太网帧结构IP编址ICMP协议ARP协议传输层协议路由基础静态路由基础距离矢量路由协议——RIP链路状态协议——OSPFHDLC&PPP原理与应用帧中继原理与配置PPPoENAT网络地址……
  • 3种方式!转到错误处理最佳实践
    1阅读 0条评论 个赞
    以下文章来源于公众号-云加社区,作者李森林导语|错误处理一直以一是编程必需要面对的问题,错误处理如果做的好的话,代码的稳定性会很好。不同的语言有不同的出现处理的方式。Go语言也一样,在本篇文章中,我们……
  • 微服务架构下基于Prometheus构建综合监控平台的最佳实践
    2阅读 0条评论 个赞
    随着Prometheus逐渐成为云原生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于Prometheus构建一体化监控平台的最佳实践和一些相关的思考,内容主要包括以下几个部分:微服……
  • epoll这个Linux高性能服务的本质真的不简单
    1阅读 0条评论 个赞
    设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才……
  • MySQL支持哈希索引吗?(收藏)
    1阅读 0条评论 个赞
    经常有朋友问,MySQL的InnoDB到底支不支持哈希索引?对于InnoDB的哈希索引,确切的应该这么说:(1)InnoDB用户无法手动创建哈希索引,这一层上说,InnoDB确实不支持哈希索引;(2)……
  • 基础巩固——至少需要多少行代码才能实现深度复制?
    1阅读 0条评论 个赞
    前言深度克隆(深拷贝)一直都是初、中级前端面试中经常被问到的题目,网上介绍的实现方式也都各有千秋,大体可以概括为三种方式:JSON.stringify+JSON.parse,这个很好理解;全量判断类……
  • 运维常用的34个Linux Shell脚本 对你一定有帮助!
    1阅读 0条评论 个赞
    作为一名Linux工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,也注意收集一些大佬写过的脚本,汇总整理一下,欢迎收藏,与君共勉!(1)用户猜数字#!/b……
  • 谈谈复杂项目代码的应用分层
    1阅读 0条评论 个赞
    —1—背景说起应用分层,大部分人都会认为这个不是很简单嘛就controller,service,mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做……
  • 你见过的最全面的Python关键知识总结
    1阅读 0条评论 个赞
    这是一份来自于SegmentFault上的开发者@二十一总结的Python重点。由于总结了太多的东西,所以篇幅有点长,这也是作者"缝缝补补"总结了好久的东西,强烈建议收藏再慢慢看~Py2……
  • 胡迪核心知识点详解(好文章合集)
    1阅读 0条评论 个赞
    以下文章来源于公众号-3分钟秒懂大数据,作者在IT中穿梭旅行在Flink实时流中,经常会通过FlinkCDC插件读取Mysql数据,然后写入Hudi中。所以在执行上述操作时,需要了解……
  • 低代码实时仓储系统的设计与实践
    1阅读 0条评论 个赞
    1导读本文介绍58信安基于Flink实现低代码实时数仓构建系统,我们将数仓构建这一过程进行抽象,通过工程化的思想去解决,将固有领域问题交给系统,让开发人员关注数据本身,解放人力缩短数仓构建周期。2背景……
  • 内存数据库如何利用内存?
    1阅读 0条评论 个赞
    与以磁盘存储为主的普通数据库相比,内存数据库的数据访问速度可以高出几个数量级,能大幅提高运算性能,更适合高并发、低延时的业务场景。不过,当前大部分内存数据库仍然采用SQL模型,而SQL缺乏一些……
  • 阿帕奇建筑师遵循的30条设计原则
    0阅读 0条评论 个赞
    作者介绍Srinath,科学家,软件架构师。ApacheAxis2项目的联合创始人,ApacheSoftware基金会的成员,WSO2流处理器(wso2.com/analytics)的联席架构师。……
  • MYSQL如果索引优化仅仅是添加索引 太年轻而不简单
    1阅读 0条评论 个赞
    MYSQL的索引优化,如果此时此刻看到索引的优化,仅仅想到添加适合的索引,是不完全的,索引的优化本身就具有很多的不确定性。1索引会随着时间的推移,有性能的衰减2索引会随着数据量的增加,有性能的衰……
  • Spring云应用的优雅下线和灰度发布
    2阅读 0条评论 个赞
    前言在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级……
  • MySQL批量插入数据 一次插入多少行数据效率最高?
    7阅读 0条评论 个赞
    一、前言我们在操作大型数据表或者日志文件的时候经常会需要写入数据到数据库,那么最合适的方案就是数据库的批量插入。只是我们在执行批量操作的时候,一次插入多少数据才合适呢?假如需要插入的数据有百万条,那……
最近发布资讯
更多