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中去重的三种方式 的相关文章

  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • MySQL 排序顺序 - 排序规则?

    我在对 MySQL 中的 char 字段进行排序时遇到困难 问题是重音字符与非重音字符混淆 例如 Abc bd Acc 我认为这可能与整理有关 所以我将表格的排序规则更改为utf8 ut8 bin 看完之后这个帖子 https stacko
  • 如何搜索例程的内容/(SP-触发函数)

    我需要在数据库内所有例程的例程主体 存储过程 函数 触发器 中搜索文本 我该怎么做 Thanks SELECT OBJECT NAME object id FROM sys sql modules WHERE definition LIKE
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • 如何在 SEQUELIZE (nodeJS) 中创建触发器?

    我正在尝试使用sequelize 创建一个触发器 主要思想是创建一个实例CONFIG创建后USER USER MODEL module exports function sequelize DataTypes var User sequel
  • H2 用户定义的聚合函数 ListAgg 不能在第一个参数上使用 DISTINCT 或 TRIM()

    所以我有一个 DB2 生产数据库 我需要在其中使用可用的函数 ListAgg 我希望使用 H2 的单元测试能够正确测试此功能 不幸的是H2不直接支持ListAgg 但是 我可以创建一个用户定义的聚合函数 import java sql Co
  • 内置函数将每个单词的第一个字母大写

    如果 SQL Server 中已存在此类函数 我不想为此创建自定义函数 输入字符串 This is my string to convert预期输出 This Is My String To Convert SET ANSI NULLS O
  • 如何检测Mysql/innodb中的死锁?

    我知道在 Innodb 中使用事务时不可避免地会发生死锁 并且如果应用程序代码正确处理死锁 它们是无害的 正如手册所说 只需再试一次 所以我想知道 如何检测死锁 死锁是否会发出一些特殊的 mysql 错误号 如果重要的话 我正在使用 PHP
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • 我不断收到错误“关系 [TABLE] 不存在”

    我一直在尝试查询数据库中的两个表 在服务器资源管理器中 我可以看到两个表 甚至可以看到其中的列 我们将它们称为 Schema table1 和 Schema table2 其中 Schema 的第一个字母大写 我尝试运行以下查询 selec
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • 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 窗口函数进行去重