DQL语言学习(Data Query Languge)
表数据链接: https://pan.baidu.com/s/1uDxNjKVKlz9uVicf9IYCkg 提取码: 2y1w
二、分组函数
功能:用作统计使用,又称为聚合函数或统计函数或组函数
分类:sum、avg、max、min、count
SELECT SUM(salary)
FROM employees;
SELECT AVG(salary)
FROM employees;
SELECT MAX(salary)
FROM employees;
SELECT MIN(salary)
FROM employees;
SELECT COUNT(salary)
FROM employees;
SELECT SUM(salary) 和,AVG(salary) 平均,MAX(salary) 最高, MIN(salary) 最低,COUNT(salary) 个数
FROM employees;

和distinc搭配
SELECT SUM(DISTINCT salary),SUM(salary)
FROM employees;
SELECT COUNT(DISTINCT salary),COUNT(salary)
FROM employees;

COUNT()函数
#统计个数
SELECT COUNT(salary)
FROM employees;
SELECT COUNT(*)
FROM employees;
#等价*
SELECT COUNT(1)
FROM employees;

分组查询
语法:
SELECT 分组函数,列(要求出现在group by的后面)
FROM 表
WHERE 筛选条件
GROUP BY 分组的列表
ORDER BY 子句
特点:
分组查询做条件要放在having字句中
group by子句支持放个字段分组、多个字段分组
order by放在整个分组查询后面
案例::查询每个工种的最高工资
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;

案例:那个部门的员工个数>2
SELECT COUNT(*),department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*)>2;

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

最高工资大于12000
SELECT MAX(salary),job_id
FROM employees
WHERE commission_pct IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;

案例:查询领导编号>102的每个领导手下的最低工资>5000的领导编号是哪个,以及最低工资
SELECT MIN(salary),manager_id
FROM employees
WHERE manager_id>102
GROUP BY manager_id
HAVING MIN(salary)>5000;

按表达式或函数分组
案例:按员工名的长度分组,查询每一组员工个数,筛选员工个数>5的有哪些
SELECT COUNT(*),LENGTH(last_name) len_name
FROM employees
GROUP BY len_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 department_id,job_id
HAVING AVG(salary)>10000
ORDER BY AVG(salary) DESC;

本文详细介绍了SQL中的分组函数,包括SUM、AVG、MAX、MIN、COUNT的用法,并通过实例展示了如何进行分组查询。同时,讲解了COUNT函数与DISTINCT的组合使用,以及在分组查询中HAVING子句的应用。还提供了多个实际案例,如查询每个工种的最高工资、部门个数、特定条件下的平均工资等,深入理解SQL的分组和统计功能。
&spm=1001.2101.3001.5002&articleId=109249949&d=1&t=3&u=3299f7f8701b48ee91bfee7683a7a5df)
174万+

被折叠的 条评论
为什么被折叠?



