SQL中去重的三种方式

2023-11-12

SQL去重是数据分析工作中比较常见的一个场景;
在 MySQL 中通常是使用 distinct 或 group by子句,但在支持窗口函数的 sql(如Hive SQL、Oracle等等) 中还可以使用 row_number 窗口函数进行去重。

在这里插入图片描述

需求: 统计 emp表中的员工数据中共有多少个部门 ?

1. distinct

select count(DISTINCT deptno ) from emp;

distinct 通常效率较低。它不适合用来展示去重后具体的值,一般与 count 配合用来计算条数。

注: distinct前面不能再有其他字段! 
错误用法SELECT ename , DISTINCT deptno FROM emp;

2. group by

select count(deptno) from 
(select deptno from emp group by deptno)q;

3. row_number

使用ROW_NUMBER 记录每个partition内的排序,再用sum 记录排序中为1的,即为deptno的数量’

select sum( if(r =1,1,0) ) from 
( select row_number() over(partition by deptno)as r from emp)q;

或者

 select sum( case when r=1 then 1 else 0 end ) from 
 ( select row_number() over(partition by deptno )as r from emp)q;

参考:https://blog.csdn.net/xienan_ds_zj/article/details/103869048

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL中去重的三种方式 的相关文章

  • 在 MySQL 中创建布尔列并将 false 作为默认值?

    我想在 MySQL 中创建一个表boolean默认值为的列false 但它默认接受 NULL 你必须指定0 意思是假 或1 意思是 true 作为默认值 这是一个例子 create table mytable mybool boolean
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 多级排序

    我有一个表 其中包含一些记录 其中包含名称 评级等字段 我首先想要根据评级将结果限制为 20 进行排序 然后在此结果集上想要进一步应用基于名称的排序 我知道要排序我们需要使用像这样的查询 Select from table order by
  • 如何编写 bash 函数来包装另一个命令?

    我正在尝试编写一个函数包装器mysql command If my cnf存在于 pwd 中 我想自动附加 defaults file my cnf到命令 这就是我正在尝试的 function mysql if e my cnf then
  • MySQL 中非空值的计数和分组

    我需要计算按特定 ID 分组的非空 我的意思是至少包含 1 个字符的字符串 行 例如 我的数据可能如下所示 form id mapping 1 value 1 1 1 value 2 2 2 NULL 3 value 3 我想计算每个表单的
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • 计算树中值的总和(递归查询)

    我在表员工 id name parentid 中有树结构 并且该表可以嵌套 employees 与另一个具有列 id employeeid quantity 的 Sales 表是一对多关系 每个员工都有销售数量 我想计算每个员工以及儿童员工
  • 在 SQL Server SELECT 语句中使用 CASE 时消除 NULL

    我有一份大而混乱的报告要写 它连接了 5 个表 一个表中有一列用于多个不同的值 本质上是一个 标签 列 其中标签根据用户想要使用的各种元数据的类型以创造性的方式使用 因此 我对报告的查询返回 3 个几乎相同的行 仅 标签 列有所不同 例如
  • 选择 mysql 枚举的 php 函数

    因此 我创建了一个函数 它将从数据库中的枚举字段中提取值
  • 如何在分层类别树中找到我的节点及其祖先的所有兄弟节点?

    这是我的桌子 CREATE TABLE IF NOT EXISTS Category Name varchar 25 NOT NULL lft INT UNSIGNED NOT NULL rgt INT UNSIGNED NOT NULL
  • MySQL 使用 DATE_ADD 设置 DATE 列的默认值?

    我正在尝试使用表达式将 DATE 列添加到具有 DEFAULT DATE 值的表中 ALTER TABLE wp ezts project params ADD est completion DATE NOT NULL DEFAULT DA
  • mysqldump创建空sql文件? [Windows 上的 php 和 mysql]

    我尝试转储数据库 我尝试了指定 mysqldump exe 的完整路径或仅使用 mysqldump 它仍然给我一个 0kb dumpfile sql 细节 编程语言 PHP 数据库 MySql 5 XX 操作系统 服务器 Windows S
  • 如何启用对 MySQL 服务器的外部访问? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 如何启用对 MySQL 服务器的外部访问 我可以在本地连接 但无法从网络上的另一个盒子进行连接 我刚刚尝试过 grant all privileges
  • PLSQL 中的时区转换

    我需要将系统日期和时间转换为特定时区 例如东部时间 我无法假设我当前的时区 如何在plsql中转换它 请帮我 假设你有一个TIMESTAMP WITH TIME ZONE 例如systimestamp 您可以使用AT TIME ZONE句法
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • Laravel 中的 SQL 运算符是什么?

    我正在查看 Laravel 的源代码 发现了很多 Eloquent 的 SQL 运算符 我想知道其中一些是什么以及如何使用它们 不幸的是我没有找到任何文档 这是我找到的运营商vendor laravel framework src Illu
  • 如何使用 SQL - INSERT...ON DUPLICATE KEY UPDATE?

    我有一个脚本可以捕获推文并将其放入数据库中 我将在 cronjob 上运行脚本 然后在我的网站上显示数据库中的推文 以防止达到 Twitter API 的限制 所以我不想在我的数据库中有重复的推文 我知道我可以使用 INSERT ON DU
  • 像搜索一样在mysql中包含空格

    我在某些情况下使用 mysql like 关键字时遇到问题 我的要求是这样的 首先 当我搜索时 ABC 结果应该找到ABC and ABCdef但不是xyzABCdef or xyzABC 乍一看使用起来很简单ABC 但在我搜索时的情况 h
  • 有什么方法可以在MySQL中的表名位置使用变量吗?

    我想在表名称位置使用变量 例如 SELECT FROM targetTableName 然而它会出错 有什么方法可以在MySQL中的表名位置使用变量吗 您显示的查询不起作用有两个原因 插入到查询中的用户定义变量将被视为使用字符串文字 而不是
  • Access 2013 SQL 中的转换和透视

    如何使用 TRANSFORM 和 PIVOT 函数从第一个表获取第二个表 TABLE 01 Config ID ConfigField ConfigValue 11 Name Basic 11 Version 1 01 11 Owner J

随机推荐

  • vue结合Waterfall做图片瀑布流展示

    一 安装Waterfall npm install vue waterfall plugin s 二 在组件中引入并使用
  • winform 程序的配置文件——App.config

    winform 程序的配置文件 App config Posted on 2005 09 26 17 11 sashow 阅读 668 评论 3 编辑 收藏 引用 网摘 所属分类 c 编程 在做 web 项目的时候 我一直在用 web co
  • 机器学习——1.Sklearn:特征工程

    目录 scikit learn数据集API介绍 sklearn小数据集 sklearn大数据集 sklearn数据集的使用 数据集的划分 特征工程 特征抽取 特征提取 特征提取API 字典特征提取 文本特征提取 中文文本特征值抽取 停用词
  • 线程池和连接池

    线程池 1 流程 先启动若干数量的线程 并让这些线程都处于睡眠状态 当客户端有一个新请求时 就会唤醒线程池中的某一个睡眠线程 让它来处理客户端的这个请求 当处理完这个请求后 线程又处于睡眠状态 2 作用 线程池作用就是限制系统中执行线程的数
  • Android MD5加密算法

    Android MD5加密算与J2SE平台一模一样 因为Android 平台支持 java security MessageDigest这个包 实际上与J2SE平台一模一样 算法签名 String getMD5 String val thr
  • IDEA连接MySQL

    今天使用IDEA连接MySQL时 遇到了很多问题 寻找了一个多小时终于把解决了 写篇博客记录记录 帮后来人节约时间 首先是参照其他帖子不断寻找Database视图 找了小半天才发现这个在IDEA中社区版是没有的 需要下载IDEA 的Ulti
  • 【allegro 17.4软件操作保姆级教程一】软件操作环境设置

    文中截图为16 6的软件截图 16 6与17 4的操作逻辑基本相同 大家无需担心 后续文章会使用17 4的截图 1操作环境准备1 1单位设置 可以将全局单位设置为mil 精度改为2位 也可以设置为mm 这时精度改为4位 这个根据习惯而定 操
  • PyTorch学习笔记(21) ——损失函数

    0 前言 本博客内容翻译自纽约大学数据科学中心在2020发布的 Deep Learning 课程的Activation Functions and Loss Functions 部分 废话不多说 下面直接开始吧 1 损失函数 本文是PyTo
  • 在Unity开发中使用 Rider

    Unity开发中使用Rider 环境 Windows Unity 2017 JetBrains Rider 2018 3 4 作为Windows和Visual Studio的拥趸 我是多么推崇Visual Studio 开发Unity使用
  • JS和Java实现链表类的基本功能

    综合网上实例 参考 http www 2cto com kf 201204 126773 html JavaScript实现参考 http m blog csdn net blog caiwenfeng for 23 8496029 Jav
  • 【C++入门到精通】C++入门 —— deque(STL)

    阅读导航 前言 一 deque简介 1 概念 2 特点 二 deque使用 1 基本操作 增 删 查 改 2 底层结构 三 deque的缺陷 四 为什么选择deque作为stack和queue的底层默认容器 总结 温馨提示 前言 文章绑定了
  • STL之序列式容器

    STL之序列式容器 STL容器即是将运用最广的一些数据结构实现出来 根据其在容器的排列特性 将其分为序列式容器和关联是容器 本文主要记录序列式容器 以及其常用的功能函数 1 vector vector和数组一样维护了一个连续的线性空间 ve
  • 第十二届蓝桥杯省赛 Java B组 试题 G: 最少砝码

    一 问题描述 你有一架天平 现在你要设计一套砝码 使得利用这些砝码可以称出任意小于等于 N 的正整数重量 那么这套砝码最少需要包含多少个砝码 注意砝码可以放在天平两边 输入包含一个正整数 N 输出一个整数代表答案 7 3 二 解析 用贪心的
  • CentOS7 linux怎么安装xfce 桌面

    如何安装xfce桌面 首先 yum update yum grouplist yum install epel release y 安装第三方源 yum groupinstall X window system 安装X window yum
  • Niginx的介绍及安装

    Niginx的介绍及安装 前言 一 Nginx是什么 二 Nginx安装使用步骤 前言 随着一个应用程序的访问量越来越庞大 对数据库的访问量也随之增强 而单个服务器的承受能力是有限的 这时就需要增加多个服务器 但是我们如何保证所有访问分摊到
  • 门控时钟及其思考

    这篇文章学习所谓的门控时钟 门控时钟有两种 与门控时钟和或门控时钟 1 与门控时钟 门控时钟结构 低电平选通的锁存器 一个与门 保证了经过与门的使能信号不会在时钟高电平的时候翻转 从原理上消除了由于使能信号的不确定性导致门控时钟产生毛刺的情
  • 第一章初识R语言

    1 1 R扩展包的安装与载入 1 在线安装 例如 需要安装 class 这个扩展包 则输入命令install package class 执行即可 也可以同时安装多个包 例如 需同时安装 class 和 cluster 两个包 则输入命令i
  • shader从入门到精通——(二)三大主流编程语言

    shader language 1 基于OpenGL的OpenGL Shading Language 简称GLSL 2 基于DirectX的High Level Shading Language 简称HLSL 3 基于NVIDIA公司的C
  • OCX控件在web页面不能加载的问题

    1 问题描述 写了个OCX 在本地静态html文件里加载 双击用IE打开 能够正常加载OCX控件 调用其方法也正常 把测试的html文件放入apache目录 通过IE 敲入localhost访问也正常 但是部署到服务器上 通过客户端PC访问
  • SQL中去重的三种方式

    SQL去重是数据分析工作中比较常见的一个场景 在 MySQL 中通常是使用 distinct 或 group by子句 但在支持窗口函数的 sql 如Hive SQL Oracle等等 中还可以使用 row number 窗口函数进行去重