mysql基础知识分组函数跟分组查询(三)

2023-05-16

一:分组函数

功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:
sum 求和、avg 平均值、max 最大值 、min 最小值 、count 计算个数
特点:
1、sum、avg一般用于处理数值型
   max、min、count可以处理任何类型
2、以上分组函数都忽略null值
3、可以和distinct搭配实现去重的运算
4、count函数的单独介绍
一般使用count(*)用作统计行数
5、和分组函数一同查询的字段要求是group by后的字段

1.使用操作

SELECT SUM(salary) FROM employees;
SELECT AVG(salary) FROM employees;
SELECT MIN(salary) FROM employees;
SELECT MAX(salary) FROM employees;
SELECT COUNT(salary) FROM employees;
SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;
SELECT SUM(salary) 和,ROUND(AVG(salary),2) 平均,MAX(salary) 最高,MIN(salary) 最低,COUNT(salary) 个数
FROM employees;

2、参数支持哪些类型

SELECT SUM(last_name) ,AVG(last_name) FROM employees;
SELECT SUM(hiredate) ,AVG(hiredate) FROM employees;
SELECT MAX(last_name),MIN(last_name) FROM employees;
SELECT MAX(hiredate),MIN(hiredate) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT COUNT(last_name) FROM employees;

3、是否忽略null

SELECT SUM(commission_pct) ,AVG(commission_pct),SUM(commission_pct)/35,SUM(commission_pct)/107 FROM employees;
SELECT MAX(commission_pct) ,MIN(commission_pct) FROM employees;
SELECT COUNT(commission_pct) FROM employees;
SELECT commission_pct FROM employees;

4、和distinct搭配

SELECT SUM(DISTINCT salary),SUM(salary) FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary) FROM employees;

5、count函数的详细介绍

SELECT COUNT(salary) FROM employees;
SELECT COUNT(*) FROM employees;
SELECT COUNT(1) FROM employees;
效率:
MYISAM存储引擎下  ,COUNT(*)的效率高
INNODB存储引擎下,COUNT(*)和COUNT(1)的效率差不多,比COUNT(字段)要高一些

6、和分组函数一同查询的字段有限制,这样的结果就不对,,employee_id有多条,但是AVG(salary)只输出一条。表结果不对称

SELECT AVG(salary),employee_id FROM employees;

二:分组查询

语法:
select 分组函数,列(要求出现再group by的后面)
from 表
【where 筛选条件】
group by 分组的列表
【order by 排序的字段】
limit m,n;  注意:这里表示结果集从m+1行开始(包含m+1行记录),一共筛选n行记录。
注意:
     查询列表必须特殊,要求是分组函数和group by 后出现的字段。
特点
1、和分组函数一同查询的字段必须是group by后出现的字段
2、筛选分为两类:分组前筛选和分组后筛选
            针对的表            位置连接的关键字
分组前筛选     原始表            group by前  where
分组后筛选  group by后的结果集    group by后  having

问题1:分组函数做筛选能不能放在where后面
答:不能

问题2:where——group by——having
注意:一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率
3、分组可以按单个字段也可以按多个字段
4、可以搭配着排序使用

引入:查询每个部门的员工个数
SELECT COUNT(*) FROM employees WHERE department_id=90;

1.分组案例详解

案例1:查询每个工种的员工平均工资
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id;

案例2:查询每个位置的部门个数
SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;

2、可以实现分组前的筛选

案例1:查询邮箱中包含a字符的 每个部门的最高工资
SELECT MAX(salary),department_id
FROM employees
WHERE email LIKE '%a%'
GROUP BY department_id;

案例2:查询有奖金的每个领导手下员工的平均工资
SELECT AVG(salary),manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

3、分组后筛选

案例:查询哪个部门的员工个数>5
①查询每个部门的员工个数
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id;
② 筛选刚才①结果
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>5;

案例2:每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
SELECT job_id,MAX(salary)
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;

案例3:领导编号>102的每个领导手下的最低工资大于5000的领导编号和最低工资
manager_id>102
SELECT manager_id,MIN(salary)
FROM employees
GROUP BY manager_id
HAVING MIN(salary)>5000;

4.添加排序

案例:每个工种有奖金的员工的最高工资>6000的工种编号和最高工资,按最高工资升序
SELECT job_id,MAX(salary) m
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING m>6000
ORDER BY m ;

5.按多个字段分组

案例:查询每个工种每个部门的最低工资,并按最低工资降序
SELECT MIN(salary),job_id,department_id     
FROM employees
GROUP BY department_id,job_id    
ORDER BY MIN(salary) DESC;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql基础知识分组函数跟分组查询(三) 的相关文章

随机推荐

  • 【机器学习】浅析机器学习各大算法的适用场景

    最近在参加一个分类算法竞赛 xff0c 也正好整理各个分类机器学习算法的简单介绍 xff0c 应用场景和优缺点 资源来自网上和自己个人理解 一 逻辑回归模型 1 理解逻辑回归模型 xff08 LR xff09 逻辑回归是一种分类算法 xff
  • 【机器学习】异常检测算法之(KNN)-K Nearest Neighbors

    sklearn库里的KNN并没有直接用于异常检测 xff0c 但是包含了距离计算的函数 xff0c 所以我们应用PyOD中KNN库进行异常检测 xff0c 里面基本上也是调用sklearn的函数进行计算 xff0c 并进行了一些加工 一 图
  • 异常检测从入门到应用

    作者 xff1a 成森 64 知乎 来源 xff1a https zhuanlan zhihu com p 116235115 异常检测 Anomaly Detection 作为机器学习的一个重要分支 xff0c 实际应用领域广泛 xff0
  • Jetson Nano配置踩坑全记录

    Jetson Nano配置踩坑全记录 Jetson Nano相关参数 xff1a JetPack 4 6 xff0c cuda 10 2 xff0c SD卡内存 xff1a 512G 一 Jetson Nano系统镜像烧录 在Nvidia官
  • kubeadm的rbac

    什么是 Kubernetes RBAC 基于角色的访问控制 xff08 Role Based Access Control 即 34 RBAC 34 xff09 xff1a 使用 rbac authorization k8s io API
  • kubeadm部署dashboard-2.0.0版本

    kubeadm部署dashboard 2 0 0版本 创建dashboard的secret的私钥 root 64 yunwei CA openssl genrsa out od com key 2048 创建dashboard的secret
  • redis5.0的主从跟哨兵

    redis的主从跟哨兵 安装redis 5 0 12 下载地址 xff1a https download redis io releases 1 下载安装redis root 64 master01 cd opt root 64 maste
  • ROS运行gazebo提示“process has die”问题-已解决

    ROS运行gazebo提示 process has die 问题 已解决 解决方案概述升级gazebo方法 解决方案概述 无数次出现这个问题 xff0c 看了好多教程 xff0c 有的是把这个命令添加到 bashrc文件中 xff1a ex
  • Elasticsearch7.9集群部署,head插件,canal同步mysql数据到es,亲自测试,无坑

    Elasticsearch集群部署 1 服务器规划 10 4 7 11 node1 10 4 7 12 node2 10 4 7 13 node3 1 集群相关 一个运行中的 Elasticsearch 实例称为一个节点 xff0c 而集群
  • elasticsearch备份

    es集群主机分布 10 4 7 11 node1 10 4 7 12 node2 10 4 7 21 node3 10 4 7 22 nfs 1 在主机10 4 7 22部署nfs root 64 localhost yum install
  • 批量拷贝公钥到指定的主机,实现免秘钥登录

    一 xff1a copy公钥脚本 root 64 ansible tmp cat copy pubkey sh bin bash PassWord 61 1 rpm qa grep sshpass 2 gt amp 1 gt dev nul
  • centos7内核参数优化以及内核升级

    一 xff1a 修改内核配置文件 vim etc sysctl conf 刷新配置文件 sysctl p 关IPv6 net ipv6 conf all disable ipv6 61 1 net ipv6 conf default dis
  • k8s的ceph

    ceph安装 地址 xff1a https rook io docs rook v1 8 quickstart html 特性丰富 1 xff0c 支持三种存储接口 xff1a 块存储 文件存储 对象存储 2 xff0c 支持自定义接口 x
  • prometheus监控k8s集群

    prometheus监控k8s集群 实现思路 pod性能 xff1a 使用cadvisor进行实现 xff0c 监控容器的CPU 内存利用率 Node性能 xff1a 使用node exporter实现 xff0c 主要监控节点CPU 内存
  • centos7部署vsftpd虚拟用户

    vsftpd部署 一 xff1a 安装vsftpd 1 首先要查看你是否安装vsftpd rpm qa grep vsftpd vsftpd 3 0 2 10 el7 x86 64 2 安装vsftpd yum install y vsft
  • Ceph OSD扩容与缩容

    在企业生产环境中 xff0c 随着时间的迁移数据会存在磁盘空间不足 xff0c 或者机器节点故障等情况 OSD又是实际存储数据 xff0c 所以扩容和缩容OSD就很有必要性 随着我们数据量的增长 xff0c 后期可能我们需要对osd进行扩容
  • mysql的条件查询基础知识(一)

    一 xff1a 条件查询基础知识 语法 xff1a select 查询列表 from 表名 where 筛选条件 二 xff1a 分类 xff1a 主要分为3类 xff1a 一 按条件表达式筛选 简单条件运算符 xff1a gt lt 61
  • 【C++构造函数后面的冒号作用】

    C 43 43 构造函数后面的冒号作用 功能1 对基类进行初始化2 对类成员进行初始化3 对类中const变量进行初始化 功能 1 对基类进行初始化 多重继承中 xff0c 对多个基类进行初始化 冒号后面有多个参数 xff0c 中间用逗号隔
  • mysql基础知识常见函数(二)

    一 xff1a 常见函数概念 概念 xff1a 类似于java的方法 xff0c 将一组逻辑语句封装在方法体中 xff0c 对外暴露方法名 好处 xff1a 1 隐藏了实现细节 2 提高代码的重用性 调用 xff1a select 函数名
  • mysql基础知识分组函数跟分组查询(三)

    一 xff1a 分组函数 功能 xff1a 用作统计使用 xff0c 又称为聚合函数或统计函数或组函数 分类 xff1a sum 求和 avg 平均值 max 最大值 min 最小值 count 计算个数 特点 xff1a 1 sum av