SQL去重方法有哪些
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章给大家分享的是有关SQL去重方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立
千家信息网最后更新 2025年01月16日SQL去重方法有哪些
这篇文章给大家分享的是有关SQL去重方法有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
在使用SQL提数的时候,常会遇到表内有重复值的时候,比如我们想得到 uv (独立访客),就需要做去重。
在 MySQL 中通常是使用 distinct
或 group by
子句,但在支持窗口函数的 sql(如Hive
SQL
、Oracle
等等) 中还可以使用 row_number 窗口函数进行去重。
举个栗子,现有这样一张表 task:
备注:
task_id
: 任务id;order_id
: 订单id;start_time
: 开始时间
注意:一个任务对应多条订单
我们需要求出任务的总数量,因为 task_id 并非唯一的,所以需要去重:
distinct
-- 列出 task_id 的所有唯一值(去重后的记录)select distinct task_idfrom Task;-- 任务总数select count(distinct task_id) task_numfrom Task;
distinct
通常效率较低。它不适合用来展示去重后具体的值,一般与 count
配合用来计算条数。distinct
使用中,放在 select
后边,对后面所有的字段的值统一进行去重。比如distinct
后面有两个字段,那么 1,1 和 1,2 这两条记录不是重复值 。
group by
-- 列出 task_id 的所有唯一值(去重后的记录,null也是值)-- select task_id-- from Task-- group by task_id;-- 任务总数select count(task_id) task_numfrom (select task_id from Task group by task_id) tmp;
row_number
row_number 是窗口函数,语法如下:
row_number() over (partition by <用于分组的字段名> order by <用于组内排序的字段名>)
其中partition by
部分可省略。
-- 在支持窗口函数的 sql 中使用select count(case when rn=1 then task_id else null end) task_numfrom (select task_id , row_number() over (partition by task_id order by start_time) rn from Task) tmp;
此外,再借助一个表 test 来理理 distinct 和 group by 在去重中的使用:
-- 下方的分号;用来分隔行select distinct user_idfrom Test; -- 返回 1; 2select distinct user_id, user_typefrom Test; -- 返回1, 1; 1, 2; 2, 1select user_idfrom Testgroup by user_id; -- 返回1; 2select user_id, user_typefrom Testgroup by user_id, user_type; -- 返回1, 1; 1, 2; 2, 1select user_id, user_typefrom Testgroup by user_id; -- Hive、Oracle等会报错,mysql可以这样写。-- 返回1, 1 或 1, 2 ; 2, 1(共两行)。只会对group by后面的字段去重,就是说最后返回的记录数等于上一段sql的记录数,即2条-- 没有放在group by 后面但是在select中放了的字段,只会返回一条记录(好像通常是第一条,应该是没有规律的)
感谢各位的阅读!关于"SQL去重方法有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
任务
函数
字段
方法
内容
总数
时候
更多
篇文章
订单
支持
不错
实用
两个
中放
分号
备注
多条
子句
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
我国第一个网络安全法规
网络安全毕业设计题目
中国报纸的数据库
亚沙委网络安全培训
软件开发 笑话
重庆天衡互联网科技集团
软件开发项目竣工会议
dns解析服务器配置
魔兽怀旧服服务器里面的金币
企业用什么数据库
数据库小组分工
pcl2怎么链接服务器
网络安全威胁攻击手段
网贷app软件开发多少钱
河南濮阳的dns服务器虚拟主机
网络安全素质教育考试资料
腾讯网络安全技术总监是谁
电信 ping服务器
惠程科技和互联网的关系
魔塔大陆服务器
云南咖啡
软件开发公司排行2016
小学生观看网络安全视频
软件开发项目人员
逆水寒四周年服务器开启时间
求生之路2租服务器
360网络安全岗位
机器学习的网络安全就业
软件开发工程师在哪学
超云r3210服务器