当前位置: 首页 > news >正文

数据库|(五)分组查询

1. 介绍

引入:查询每个部门的平均工资

-- 以前写法:求的是总平均工资。
SELECT AVG(salary) FROM employees;
-- 正确写法
SELECT AVG(salary), department_id
FROM employees
GROUP BY department_id;

2. 语法

SELECT 分组函数,--列要求出现在 group by 的后面
FROM[WHERE 筛选条件]
[GROUP BY 分组的列表]
[ORDER BY|分组函数];

注意:
查询列表必须特殊,要求是分组函数和 group by 后出现的字段。

一般出现 “每个”、“各个”、“每一个”、“所有” 等词语,都是要进行分组查询,并且这些词的后紧接的就是 ORDER BY 后的内容。

3. 简单分组函数

案例一:查询每个工种的最高工资

SELECT MAX(salary), job_id
FROM employees
GROUP BY job_id;

案例二:查询每个位置上的部门个数

SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;

2. 添加筛选条件

案例1:普询邮箱中包含a字符的,每个部门的平均工资

SELECT AVG(salary), department_id
FROM employees
WHERE email like '%a%'
GROUP BY department_id;

案例2:查询有奖金的每个领导手下员工的最高工资

SELECT MAX(salary), manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

3. 添加复杂的筛选条件

添加分组后的筛选:HAVING

案例1: 查询哪个部门的员工个数>2

SELECT COUNT(*), department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>2;

案例2:查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

-- 1. 查询每个工种有奖金的员工的最高工资
SELECT MAX(salary),job_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id;
-- 2. 根据1结果继续筛选,最高工资>12000
SELECT MAX(salary),job_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;

案例3:查询领导编号>102的每个领导手下的最低工资>5000的领导编号

 SELECT MIN(salary), manager_idFROM employeesWHERE manager_id>102GROUP BY manager_idHAVING MIN(salary)>5000;

4. 分组查询特点

分组查询中的筛选条件分为两类:

分类数据源关键字位置
分组前筛选原始表WHEREGROUP BY 子句的前面
分组后筛选分组后的结果集HAVINGGROUP BY 子句的后面
  1. 分组函数做条件肯定是放在 having 子句中
  2. 能用分组前筛选的优先使用分组前筛选(性能好)
  3. GROUP BY 子句支持单个字段分组,多个字段分组(多个字段之间用逗号隔开,没有顺序要求)
  4. 排序查询放在最后

5. 按表达式或函数分组

案例: 按员工姓名的长度分组,查询每一组的员工个数,筛选员工个数>5

-- a. 查询每个长度的员工个数
SELECT COUNT(*), LENGTH(last_name) AS len_name
FROM employees
GROUP BY LENGTH(last_name)
-- b. 添加筛选条件
SELECT COUNT(*) c, LENGTH(last_name) AS len_name
FROM employees
GROUP BY len_name
HAVING c>5;

6. 按多个字段分组

案例: 查询每个部门每个工种的员工的平均工资

SELECT AVG(salary), department_id, job_id
FROM employees
GROUP BY department_id, job_id;

7. 分组查询添加排序

案例: 查询每个部门每个工种的员工的平均工资,并且按平均工资的高低排列
排序查询放在最后

SELECT AVG(salary) a, department_id, job_id
FROM employees
WHERE department_id IS NOT NULL
GROUP BY department_id, job_id
HAVING a>10000
ORDER BY a DESC;

相关文章:

数据库|(五)分组查询

(五)分组查询1. 介绍2. 语法3. 简单分组函数2. 添加筛选条件3. 添加复杂的筛选条件4. 分组查询特点5. 按表达式或函数分组6. 按多个字段分组7. 分组查询添加排序1. 介绍 引入:查询每个部门的平均工资 -- 以前写法:求的是总平均工…...

Orin安装ssh、vnc教程

文章目录一:ssh远程终端的配置PC的配置MobaXterm的下载二:VNC Viewer远程图形界面终端配置:PC配置:一:ssh远程 终端的配置 1.ifconfig查看终端ip地址 其中的eth是网口,我们需要看的是wlan0下的inet&#…...

Allegro如何快速删除孤立铜皮操作指导

Allegro如何快速删除孤立铜皮操作指导 在做PCB设计的时候,铺铜是常用的设计方式,在PCB设计完成之后,需要删除PCB上孤立的铜皮,即铜皮有网络但是却没有任何连接 如下图 通过Status报表也可以看到Isolated shapes 如何快速地删除孤立铜皮,具体操作如下 点击Shape...

从单管单色到单管RGB,这项MicroLED工艺不可忽视

微显示技术商Porotech,在CES 2023期间展示了最新的MicroLED显示模组。近期,AR/VR光学领域的知名博主Karl Guttag深度分析了该公司的微显示技术,并指出Porotech带来了他见过最有趣的MicroLED技术。Guttag表示:Porotech是本届CES上给…...

6-Java中新建一个文件、目录、路径

文章目录前言1-文件、目录、路径2-在当前路径下创建一个文件3-在当前路径下创建一个文件夹(目录)3.1 测试1-路径已经存在3.2 测试2-路径不存在3.2 创建不存在的路径并新建文件3.3 删除已存在的文件并新建4-总结前言 学习Java中如何新建文件、目录、路径…...

Bootstrap系列之Flex布局

文章目录Bootstrap中的Flexd-flex与d-inline-flex也存在响应式变化flex水平布局flex垂直布局flex水平与垂直也存在响应式变化内容排列(justify-content响应式变化也存在于这里sm,md,lg,xl)子元素对齐方式Align items&a…...

匈牙利算法与KM算法的区别

前记 在学习过程中,发现很多博客将匈牙利算法和KM算法混为一谈,当时只管用不管分析区别,所以现在来分析一下两个算法之间的区别。 匈牙利算法在二分图匹配的求解过程中共两个原则: 1.最大匹配数原则 2.先到先得原则 而KM算法求…...

You Only Need 90K Parameters to Adapt Light 论文阅读笔记

这是BMVC2022的论文,提出了一个轻量化的局部全局双支路的低光照图像质量增强网络,有监督。 思路是先用encoder f(⋅)f(\cdot)f(⋅)转到raw-RGB域,再用decoder gt(⋅)g_t(\cdot)gt​(⋅)模拟ISP过程转到sRGB域。虽然文章好像没有明确指出&…...

【vue2小知识】实现axios的二次封装

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:在vue2中实现axios的二次封装 目录 一、平常axios的请求发送方式 二、axios的一次封装…...

走近php的数组:数组的定义与数组函数

数组是一种数据结构,它由一组元素组成,这些元素可以是相同类型或不同类型。数组是在程序运行时动态创建的,可以根据需要增加或删除元素,因此它们是非常灵活和实用的数据结构。在大多数编程语言中,数组都有一个索引&…...

Docker 应用实践-仓库篇

目前 Docker 官方维护了一个公共仓库 Docker Hub,用于查找和与团队共享容器镜像,界上最大的容器镜像存储库,拥有一系列内容源,包括容器社区开发人员、开放源代码项目和独立软件供应商(ISV)在容器中构建和分…...

python+django篮球NBA周边商城vue

目 录 第一章 绪 论 1 1.1背景及意义 1 1.2国内外研究概况 1 1.3 研究的内容 1 第二章 关键技术的研究 3 2.1 vue技术介绍 3 myproject/ <-- 高级别的文件夹 |-- myproject/ <-- Django项目文件夹 | |-- myproje…...

抽象类与接口的区别

抽象类什么是抽象类&#xff1f;抽象类是特殊的类&#xff0c;只是不能被实例化&#xff1b;除此以外&#xff0c;具有类的其他特性&#xff1b;重要的是抽象类可以包括抽象方法&#xff0c;这是普通类所不能的。抽象方法只能声明于抽象类中&#xff0c;且不包含任何实现&#…...

1904. 你完成的完整对局数

题目&#xff1a; 一款新的在线电子游戏在近期发布&#xff0c;在该电子游戏中&#xff0c;以 刻钟 为周期规划若干时长为 15 分钟 的游戏对局。这意味着&#xff0c;在 HH:00、HH:15、HH:30 和 HH:45 &#xff0c;将会开始一个新的对局&#xff0c;其中 HH 用一个从 00 到 23…...

Vue3:自定义指令以及简单的后台管理权限封装

目录 前言&#xff1a; 自定义指令介绍&#xff1a; 局部的自定义指令&#xff1a; 全局自定义指令&#xff1a; 讲讲后台管理权限管理&#xff1a; 前言&#xff1a; 说起这个自定义指令的使用场景&#xff0c;我第一反应就是&#xff0c;后台管理的权限管理&#xff0c;要…...

剑指 Offer 12. 矩阵中的路径

摘要 剑指 Offer 12. 矩阵中的路径 一、回溯算法解析 本问题是典型的矩阵搜索问题&#xff0c;可使用 深度优先搜索&#xff08;DFS&#xff09; 剪枝解决。 深度优先搜索&#xff1a; 可以理解为暴力法遍历矩阵中所有字符串可能性。DFS 通过递归&#xff0c;先朝一个方向搜…...

springboot+jersey+tomcat实现跨域方式上传文件到服务器

前言 在服务器上&#xff0c;当我们启动了tomcat&#xff0c;就可以以 http://ip地址:8080/文件路径/文件名 的方式&#xff0c;进行访问到我们服务器上处于tomcat的webapps文件夹下的文件 于是为了可以往上面加文件&#xff0c;我们有两种方式&#xff0c;一种就是直接复制文…...

【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…...

猜数字游戏——C++

我们在有了一定的C基础了以后&#xff0c;简单的实现一个案例&#xff08;其实只要会while循环结构就行了&#xff09;&#xff0c;我们本章内容会实现猜数字游戏&#xff0c;大家有什么语法疑问可以看看我写的&#xff1a;C快速入门_染柒_GRQ的博客-CSDN博客&#xff0c;该博客…...

整数对最小和

题目描述 给定两个整数数组 array1 array2。数组元素按升序排列&#xff0c;假设从array1 、array2中分别取出一个元素可构成一对元素&#xff0c;现在需要取出K个元素并对取出的所有元素求和&#xff0c;计算和的最小值 注意事项 两对元素如果对应于array1 array2中的两个下…...

DDD 中的代码组织:按技术层分 vs 按领域模块分,哪种才是正解?

前言 在实践领域驱动设计&#xff08;DDD&#xff09;时&#xff0c;你可能见过两种截然不同的代码组织方式&#xff1a;一种是传统的按技术层划分文件夹&#xff0c;另一种是按业务模块划分文件夹。两种写法的人都声称自己在做 DDD&#xff0c;那到底哪种更合理&#xff1f;本…...

2026年想做美缝施工?专业靠谱的美缝施工究竟哪家好?

在装修领域&#xff0c;美缝施工虽看似是小工程&#xff0c;却对家居整体美观度和实用性影响重大。然而&#xff0c;美缝行业乱象丛生&#xff0c;让众多业主在选择美缝施工团队时犯了难。2026年若想做美缝施工&#xff0c;怎样才能选到专业靠谱的团队呢&#xff1f;下面为大家…...

课堂教学PPT模板平台深度测评与选用指南

一、引言&#xff1a;PPT—— 课堂教学的重要辅助工具在当今的课堂教学中&#xff0c;PPT 已经成为了教师们不可或缺的 “魔法道具”。一份精心设计的 PPT&#xff0c;就像一位无声的助教&#xff0c;能够将抽象的知识变得直观形象&#xff0c;将枯燥的内容变得生动有趣。它不仅…...

内网服务器福音:手把手教你搞定Supervisor 4.0.4离线安装(附CentOS 7.6 + Python 2.7.5环境避坑指南)

内网环境下的Supervisor 4.0.4离线部署全攻略&#xff1a;从依赖解析到避坑实践 在金融、政务等安全敏感领域&#xff0c;生产服务器往往部署在严格隔离的内网环境中。这种架构虽然保障了系统安全性&#xff0c;却给运维工具链的部署带来了独特挑战——无法直接通过pip install…...

终极LDDC歌词工具指南:如何快速获取完美同步的逐字歌词

终极LDDC歌词工具指南&#xff1a;如何快速获取完美同步的逐字歌词 【免费下载链接】LDDC 简单易用的精准歌词(逐字歌词/卡拉OK歌词)下载匹配工具|A simple and user-friendly tool for downloading and matching precise lyrics (word-by-word lyrics/Karaoke lyrics) 项目地…...

深入拆解 MySQL InnoDB 隔离级别:从 MVCC 到临键锁

前言 关于 MySQL InnoDB 的事务隔离级别&#xff0c;90% 的开发者都存在至少一个致命误区&#xff1a; 误区1&#xff1a;RR&#xff08;可重复读&#xff09; 临键锁 彻底解决了幻读误区2&#xff1a;Serializable 只是比 RR 加的锁更多&#xff0c;本质还是用 MVCC误区3&a…...

鸿蒙备考题库页面构建:错题本、小组榜单与备考提示模块详解

鸿蒙备考题库页面构建&#xff1a;错题本、小组榜单与备考提示模块详解 前言 在 HarmonyOS 6.0 应用开发中&#xff0c;教育类应用的错题管理、学习排行榜和系统提示是提升用户粘性的关键功能模块。本文将以“备考题库”应用中的“错题本”高频错题列表、“小组榜单”学习排名和…...

Mythos骨架式推理:企业级AI能力治理与因果建模新范式

1. 项目概述&#xff1a;一次被刻意“锁住”的能力跃迁如果你最近关注大模型前沿动态&#xff0c;大概率已经看到“Anthropic Mythos”这个词在技术圈悄然升温。它不是某个新发布的开源模型&#xff0c;也不是某家创业公司的秘密武器&#xff0c;而是Anthropic内部代号为Mythos…...

农业信息智能化种植系统(10079)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

Unity中DragonBones多动画性能优化:图集复用与骨骼模板化

1. 为什么DragonBones动画在Unity里总“卡得莫名其妙”&#xff1f;我第一次在Unity项目里接入DragonBones时&#xff0c;美术给的是一套角色的12个独立动画&#xff1a;idle、walk、run、jump、attack1、attack2、hurt、die、victory、taunt、cast、reload——每个都带完整骨骼…...