MySQL数据库查询语句之组函数,子查询语句

组函数

  • 以组为操作单位,一组数据得到一个结果。

  • 在没有手动分组的前提下,整张表默认为一组数据

  1. max(列名):获取最大值

  2. min(列名):获取最小值

  3. sum(列名):获取总和

  4. avg(列名):获取平均值

  5. count(列名):统计值的个数

  • 所有组函数都会自动忽略null值

-- 查看员工的最高薪资
select max(salary) from employees
-- 查看员工的最低薪资、平均薪资、月薪资总和
select min(salary),avg(salary),sum(salary) from employees
-- 统计总共有多少名员工
select count(*) from employees
select count(employee_id) from employees
-- 统计员工表中部门的个数
-- 先对整张表的部门id进行去重,再count统计结果
select count(distinct department_id) from employees

分组

  • 在某些情况下,我们需要根据需要对表中数据进行手动分组

  • 规则:值相同的为同一组数据

select 列名 from 表名 group by 列名 

执行顺序:from-->group by-->select

先确定从哪张表进行操作-->对表中数据进行分组-->基于分组结果进行查询操作

-- 查询各个部门的平均薪资
select department_id,avg(salary) from employees group by department_id

where+group by

  • 先where,再group by

    先筛选出符合要求的数据,再对符合要求的数据进行分组时,分组的工作量会被减少,效率更高

where 条件 group by 列名
-- 查询部门id为10,20,30的部门的平均薪资
select department_id,avg(salary) 
from employees
where department_id in(10,20,30)
group by department_id
  • 执行顺序:from-->where-->group by-->select

having子句

  • 和where类似,也是用来做数据筛选,在分组之后执行

group by 列名 having 条件
-- 查询部门平均薪资>=7000的部门id
select department_id,avg(salary)
from employees
group by department_id   -- 先分组
having avg(salary)>=7000  -- 后筛选

和where子句的区别
  1. where在分组前执行,having在分组后执行

  2. where子句存在分组时不能使用组函数,但是having可以

  3. 当既可以使用where,又能使用having时,优先使用where,效率更高

limit关键字

  • 作用:限制查询结果显示的条目数,通常用于分页

select 列名.. from 表名
limit 显示的起始下标,显示的条数
  • 使用:

    1. 该关键字是基于查询的最终结果进行限制显示,所以其与其他查询关键字使用时,必须最后执行,所以一定写在最后

    2. 下标为0时,可以省略不写

-- 查询工资最高的前十名员工信息
select employee_id,salary
from employees
order by salary desc -- 先根据工资进行降序排序
limit 0,10  -- 显示前十行
​
-- 查看前十条员工信息
select * from employees limit 10
​
-- 查询部门平均薪资最高的前3个部门id
-- 分析:-- 部门平均薪资:根据部门id分组 group by -- 最高:根据平均薪资进行降序排序  order by avg(salary)-- 前三个:limit从最终查询结果中提取出前三条
select department_id,avg(salary)
from employees
group by department_id  -- 根据部门id分组
order by avg(salary) desc  -- 根据平均薪资进行降序排序
limit 3 -- 从最终查询结果中提取出前三条

查询关键字的顺序

  • select 、 from 、where 、 order by 、 group by 、 having 、 limit

语法顺序:
select 、 from 、where、 group by、having 、order by 、limit

子查询

  • 当一个SQL的执行需要借助另一个SQL的执行结果时,则需要进行SQL嵌套,该语法结构称之为子查询

select 列名... from 表名 where 列名 =|in (子SQL语句)
  • 执行顺序:优先执行小括号内的子SQL,根据子SQL的执行结果再执行外层SQL

  • 只要逻辑完整,对SQL的嵌套层数不做要求

    • 执行:从内向外执行

where单值子查询

  • 子SQL(被嵌套的SQL)返回的时一行一列的单个结果

-- 查询员工id为101号员工的领导信息
-- 先查询员工id为101号员工的直接领导的id
select manager_id from employees where employee_id=101
-- 拼装
select * from employees
where employee_id=(select manager_id from employees where employee_id=101
)
​
-- 查询员工id为100的员工所在的部门信息
-- 查询员工id为100的员工所在的部门id
select department_id from employees where employee_id=100
-- 拼装
select * from departments
where department_id =(select department_id from employees where employee_id=100)

where多值子查询

  • 子SQL返回的是多个结果

-- 查询工资>10000的员工所在的部门信息
select * from departments 
where department_id in(select department_id from employees where salary>10000) 

from子查询(了解)

  • 将子SQL的查询结果临时看作一张表进行后续操作

  • 为了符合语法要求,需要给子查询的结果起别名充当临时表的表名

-- 查询工资最高的前十名员工的总薪资
​
-- 分析:1. 把工资最高的前十名员工的薪资查出来-- 2. 对这十个工资进行求和
-- 查询SQL的基本语法:select 列名 from 表名
select sum(salary) 
from (select salary from employees order by salary desc limit 10) as e
​
-- 子SQL:把工资最高的前十名员工的薪资查出来
select salary from employees order by salary desc limit 10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/641537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20.云原生之GitLab CICD实战

云原生专栏大纲 文章目录 GitLab RunnerGitLab Runner 介绍Gitlab Runner工作流程 Gitlab集成Gitlab RunnerGitLab Runner 版本选择Gitlab Runner部署docker-compose方式安装kubesphere中可视化方式安装helm方式安装 配置gitlab-runner配置gitlab-ci.ymlgitlab-ci.yml 介绍编写…

基于FPGA的高效乘法器

1、设计思路 二进制的乘法运算与十进制的乘法运算相似,如下图所示,二进制数据6’b110010乘以二进制数据4’b1011,得到乘积结果10’b1000100110。 图1 二进制乘法运算 仔细观察上图发现,乘数最低位为1(上图紫色数据位&a…

机器学习:什么是监督学习和无监督学习

目录 一、监督学习 (一)回归 (二)分类 二、无监督学习 聚类 一、监督学习 介绍:监督学习是指学习输入到输出(x->y)映射的机器学习算法,监督即理解为:已知正确答案…

期末考试发等级发成绩,就用易查分!

期末考试后,学校老师如何发布私密成绩?易查分可以轻松创建等级、成绩查询系统,让家长仅看到自己孩子成绩。 支持查询后留言反馈,电子签名确认签收等高级功能,节省老师沟通时间,大大提升工作效率。 &#x1…

linux安装docker(入门一)

环境:centos 7(linux) 网站 官网: https://docs.docker.com/ Docker Hub 网站: https://hub.docker.com/ 容器官方概述 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 &…

【百面机器学习】读书笔记(一)

本文系列主要作用就是读书笔记,自己看的话比较杂,没怎么归类过,所以现在跟着这个分类走一遍。本文主要内容为前两章,特征工程和模型评估。 如果我想起一些相关的内容也会做适当的补充,主打就是一个intuition&#xff…

OpenCV书签 #直方图算法的原理与相似图片搜索实验

1. 介绍 直方图算法(Image Histogram Algorithm) 通过统计图像中各个颜色值的分布情况来提供关于图像颜色特征的信息,它可以用来衡量两张图片在颜色分布上的相似度,进而可以用来进行图像相似度的比较,因此&#xff0c…

电脑录屏软件大比拼,哪个最适合你?

现如今,电脑录屏软件成为了许多用户记录、分享和教学的重要工具。从游戏玩家到专业制作人员,都需要高效的录屏软件。本文将介绍三款优秀的电脑录屏软件,通过详细的步骤和简洁的介绍,帮助用户轻松掌握这些工具的使用方法。 电脑录屏…

附1:k8s服务器初始化

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 关联文章: 《RKE快速搭建离线k8s集群并用rancher管理界面》 1.创建普通用户sre并赋予sudo权限 # adduser sre # ec…

【动态规划】879. 盈利计划

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 LeetCode879. 盈利计划 集团里有 n 名员工,他们可以完成各种各样的工作创造利润。 第 i 种工作会产生 profit[i] 的利润,它要求 group[…

大模型独立解答30道国际奥数难题,能力接近金牌选手!

谷歌旗下的AI研究机构DeepMind和纽约大学的研究人员联合开发了一个AI模型——AlphaGeometry。 AlphaGeometr是一种神经符号模型,内置了大语言模型和符号推理引擎等功能,主要用于解决各种超难几何数学题,同时可以自动生成易于查看的解题原理。 为了验证AlphaGeomet…

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …

Linux配置yum源以及基本yum指令

文章目录 一、yum介绍二、什么是软件包三、配置yum源四、一键配置yum源【三步走】五、yum指令搜索软件安装软件卸载软件 六、其他yum指令更新内核更新软件更新指定软件显示所有可更新的软件清单卸载指定包并自动移除依赖包删除软件包,以及软件包数据和配置文件 一、…

快速上手MyBatis Plus:简化CRUD操作,提高开发效率!

MyBatisPlus 1,MyBatisPlus入门案例与简介1.1 入门案例步骤1:创建数据库及表步骤2:创建SpringBoot工程步骤3:勾选配置使用技术步骤4:pom.xml补全依赖步骤5:添加MP的相关配置信息步骤6:根据数据库表创建实体类步骤7:创建Dao接口步骤8:编写引导类步骤9:编写测试类 1.2…

Redis常见类型及常用命令

目录 常见的数据类型 一、String类型 1、简介 2、常用命令 (1)新建key (2)设值取值 ​编辑 (3)批量操作 (4)递增递减 3、原子性操作 4、数据结构 二、list类型 1、list常…

Pytest中conftest.py的用法

Pytest中conftest.py的用法 ​ 在官方文档中,描述conftest.py是一个本地插件的文件,简单的说就是在这个文件中编写的方法,可以在其他地方直接进行调用。 注意事项 只能在根目录编写conftest.py 插件加载顺序在搜集用例之前 基础用法 这里…

centos 启动nacos pg版本

背景:支持国产化需求,不再使用mysql 1.修改插件 git clone https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins.git cd nacos-datasource-extend-plugins/nacos-postgresql-datasource-plugin-ext mvn package编译成功后,…

原来岳云鹏背后的女人竟然是她?有她,岳云鹏红遍大江南北。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 岳云鹏,一个出身于农村的普通孩子,曾经…

springboot小白入门

创建启动 省略。。。 第二章 springboot接口 本章学习: 1.接口定义 2.接收数据 3.返回数据 RestController注解,相当于ResponseBody + ControllerController负责接收用户的请求ResponseBody把数据写入到HTTP响应体的body部分RequestMappin…

【网络】传输层TCP协议

目录 一、概述 2.1 运输层的作用引出 2.2 传输控制协议TCP 简介 2.3 TCP最主要的特点 2.4 TCP连接 二、TCP报文段的首部格式 三、TCP的运输连接管理 3.1 TCP的连接建立(三次握手) 3.2 为什么是三次握手? 3.3 为何两次握手不可以呢? 3.4 TCP的…