目录

分组函数

简单使用

支持的参数类型

sum,avg

max,min

count

是否忽略null

sum,avg

min,max

count

案例

分组查询

引入

添加筛选条件

添加分组后的筛选(having)

按多个字段分组

添加排序

案例


分组函数

功能:做统计使用,又称为聚合函数,统计函数或组函数。

分类:

sum 求和

avg 平均值

max 最大值

min 最小值

count 计算个数

特点:1.sum,avg一般用于处理数值型。max,min,count可以用于处理任何类型。

2.以上分组函数都忽略null值

3.可以和distinct搭配实现去重运算

5.和分组函数一同查询的字段要求是group by 后的字段

简单使用

#简单使用
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) 和,ROUND(AVG(salary),2) 平均值,
MIN(salary) 最小值,MAX(salary) 最大值,COUNT(salary) 数量
FROM employees;

支持的参数类型

sum,avg

#支持的参数类型
SELECT SUM(last_name),AVG(last_name)
FROM employees;#结果为0,0
SELECT SUM(hiredate),AVG(hiredate)
FROM employees;#结果不为0

max,min

SELECT MAX(last_name),MIN(last_name)
FROM employees;#结果为姓名
SELECT MAX(hiredate),MIN(hiredate)
FROM employees;#结果为日期

count

SELECT COUNT(last_name)
FROM employees;#107
SELECT COUNT(commission_pct)
FROM employees;#35

是否忽略null

sum,avg

#是否忽略null
SELECT SUM(commission_pct),AVG(commission_pct),
SUM(commission_pct)/35,SUM(commission_pct)/107
FROM employees;
#sum忽略null

min,max

SELECT MAX(commission_pct),MIN(commission_pct)
FROM employees;
#max,min忽略null

count

SELECT COUNT(commission_pct)
FROM employees;
#count忽略null

案例

#查询员工表中最大入职时间和最小入职时间的相差天数
SELECT MAX(hiredate) 最大入职时间,
MIN(hiredate) 最小入职时间,
DATEDIFF(MAX(hiredate),MIN(hiredate)) 相差天数
FROM employees;
#查询部门编号为90的员工个数
SELECT COUNT(*)
FROM employees
WHERE department_id=90;

分组查询

语法:

select 分组函数,列(要求出现在group by的后面)

from 表

where 筛选条件

group by 分组的列表

order by 子句

注意:

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

特点:

1.分组函数条件是放在having子句中

2.能用分组前筛选的,优先考虑分组前筛选

引入

#每个部门的平均工资
SELECT AVG(salary) 平均工资,`department_id`
FROM employees
GROUP BY department_id;
#查询每个工种的最高工资
SELECT MAX(salary),job_id
FROM employees
GROUP BY job_id;
#查询每个位置上的部门个数
SELECT COUNT(*),location_id
FROM departments
GROUP BY location_id;

添加筛选条件

#添加筛选条件
#查询邮箱中包含a字符的,每个部门的平均工资
SELECT AVG(salary) 平均工资,department_id
FROM employees
WHERE email LIKE'%a%'
GROUP BY department_id;
#查询有奖金的每个领导手下的员工的最高工资
SELECT MAX(salary) 最高工资,manager_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY manager_id;

添加分组后的筛选(having)

注意:having后不能接别名,

where后不能加别名

别名不能用于判断

#添加分组后的筛选(having)
#查询哪个部门的员工个数大于2
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>2;
#查询每个工种有奖金的,最高工资>12000的员工的最高工资和工种编号
SELECT MAX(salary) 最高工资,job_id 工种编号
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY 工种编号
HAVING MAX(salary)>12000;
#查询领导编号>102的每个领导手下,
#最低工资>5000的员工的
#领导编号和最低工资
SELECT MIN(salary) 最低工资,manager_id 领导编号
FROM employees
WHERE manager_id>102
GROUP BY 领导编号
HAVING MIN(salary);
#案例:按员工姓名长度分组,
#查询每一组的员工个数,
#筛选员工个数>5的有哪些
SELECT COUNT(*),LENGTH(last_name)
FROM employees
GROUP BY LENGTH(last_name)
HAVING COUNT(*)>5;

按多个字段分组

#按多个字段分组
#案例:查询每个部门每个工种的员工平均工资
SELECT AVG(salary),department_id,job_id
FROM employees
GROUP BY department_id,job_id;

添加排序

#添加排序
#案例:查询每个部门每个工种的员工平均工资,
#并且按平均工种的高低显示
SELECT AVG(salary),department_id,job_id
FROM employees
GROUP BY job_id,department_id
ORDER BY AVG(salary) DESC;

案例

#查询各工种员工工资的最大值,最小值,平均值,总和
#并按工种号升序
SELECT MAX(salary),MIN(salary),AVG(salary),SUM(salary),job_id
FROM employees
GROUP BY job_id
ORDER BY job_id ASC;
#查询最高工资和最低工资的差距
SELECT MAX(salary),MIN(salary),MAX(salary)-MIN(salary) 差距
FROM employees;
#查询各个管理员手下员工的最低工资,
#最低工资不能低于6000,
#没有管理员的不计算在内
SELECT MIN(salary),manager_id
FROM employees
WHERE manager_id IS NOT NULL
GROUP BY manager_id
HAVING MIN(salary)>=6000;
#查询所有部门的编号,员工数量,工资平均值
#按工资平均值降序
SELECT department_id,COUNT(*),AVG(salary)
FROM employees
GROUP BY department_id
ORDER BY AVG(salary) DESC;
#具有各个job_id的员工个数
SELECT COUNT(*),job_id
FROM employees
GROUP BY job_id;

MYSQL(分组函数,分组查询)相关推荐

  1. mysql LOCATE() 函数 模糊查询,类似like %%

    mysql LOCATE() 函数 模糊查询,类似like '%%' 查询的字符串 前面添加 BINARY ,区分大小写 SELECT * FROM `ce1` WHERE locate(BINARY ...

  2. mysql自定义函数分组_mysql中的排序和分组及分组函数

    现实中有很多这样的需求,对全班同学成绩进行排名,将所有的学生信息按照班级来分组,先将学生按班级分组再进行成绩排名等等.今天老韩就来介绍一下如何通过数据库的排序.分组.分组排序来实现这个需求(是排序,不 ...

  3. mysql offset函数_mysql查询语句解析

    原标题:mysql查询语句解析 一.查询基本知识 select 列1,列2,...,列n from 表名 1.条件查询:where ①比较运算符:=.!=.< >.<= .>= ...

  4. MYSQL 自定义函数,查询节点所有父节点、查询节点所有子节点

    一.查询所有父节点. 1.sql代码 select getParentIdList(3402) 2.创建函数 CREATE FUNCTION `getParentIdList`(rootId INT) ...

  5. 数据库MySQL常见函数(含分组函数与复杂分组查询)

    文章目录 一.常见函数介绍 1. 概念: 2.好处: 3.调用格式: 4.分类: 二.单行函数 1.字符函数: 2.数学函数: 3.日期函数 4.其他函数 5.流程控制函数 二.分组函数 1.概念 2 ...

  6. Mysql进阶学习(四)分组函数与分组查询

    Mysql进阶学习(四)分组函数与分组查询 一.进阶4:分组函数 1.简单的使用 1.1 SUM 求和 1.2 AVG 求平均值 1.3MIN 最小值 1.4 MAX 最大值 1.5 COUNT求总数 ...

  7. MySQL学习-排序与分组函数

    操作的表 mysql> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO 7369 SMITH CLERK 7902 ...

  8. SQL语法之分组函数,分组查询(进阶5)and连接查询(sql92语法进阶6)

    SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...

  9. mysql常用的分组函数

    /* 功能:用作统计使用,又称为聚合函数或统计函数或组函数 分类: sum 求和.avg 平均值.max 最大值 .min 最小值 .count 计算个数 特点: 1.sum.avg一般用于处理数值型 ...

最新文章

  1. 多模态商品推荐与认知智能背后的数学
  2. 小学生python入门-写给中小学老师们的Python入门指引
  3. Python中列表的介绍以及常见操作
  4. 忘记手机绑定过的UC/交易猫账号怎么找回
  5. Nginx+win10安装配置
  6. 敏感词过滤的php代码,php实现敏感词过滤(Trie树)
  7. web前端基础(14html里面的事件)
  8. D37 682. Baseball Game
  9. 梅西、内马尔谁是全能的五边形战士?教你用BI做出可视化能力图
  10. 优化算法之——最速下降法
  11. 非华为电脑安装华为电脑管家步骤
  12. CrossApp 0.4.2 发布,隆重推出 WebView
  13. [油猴脚本开发指南]第一个脚本-HelloWorld
  14. namecheap 邮件服务器,NameCheap域名邮局/企业邮局开通与初始设置
  15. mac os x 使用教程_如何在Mac OS X计算机上使用扫描仪
  16. C++基础算法 | 单调栈(Monotonous Stack)
  17. Fiddler抓包软件[一]下载与安装
  18. 达内 Java 全套教程 NPM、PYPI、DockerHub 备
  19. 【Hadoop大数据分析与挖掘实战】(一)----------P19~22
  20. 1.搭建Java+Selenium+WebDriver测试环境

热门文章

  1. javapython学习教程_清华学霸推出适合所有小白的python+Java学习路线和教程,超赞...
  2. 10 Python运算符优先级
  3. Android四大核心组件——汇总
  4. 小白如何学3D建模?从0到1,学习经验分享
  5. 虚拟机界面怎么改成中文
  6. excel2013怎么散点图添加横纵坐标
  7. win32c语言编程实例,实例分析一个简单的Win32程序
  8. 注册github没有接收到邮件
  9. python实现lol解说抽奖
  10. 点击开关按钮,js实现电灯开关效果