1、AVG 用于数据值类型,平均数
# 员工平均工资
SELECT AVG(salary) as agv_salary FROM employees;
+-------------+
| agv_salary |
+-------------+
| 6461.682243 |
+-------------+
2、SUM 用于数据值类型,总数
# 员工月工资总和
SELECT SUM(salary) as sum_salary FROM employees;
+------------+
| sum_salary |
+------------+
| 691400.00 |
+------------+
3、MAX / MIN 适用于数值型,字符串,日期时间类型
# 员工是最高工资 / 最低工资
SELECT MAX(salary) as max_salary, MIN(salary) as min_salary FROM employees;
+------------+------------+
| max_salary | min_salary |
+------------+------------+
| 24000.00 | 2100.00 |
+------------+------------+
4、COUNT 计算指字字段在查询结构中出现的次数(不含NULL值)
SELECT COUNT(*) 'count_*',COUNT(1) as 'count_1',COUNT(employee_id) as 'count_employee_id' FROM employees
+---------+---------+-------------------+
| count_* | count_1 | count_employee_id |
+---------+---------+-------------------+
| 107 | 107 | 107 |
+---------+---------+-------------------+
5、GROUP BY
#需求:查询各个部门的平均工资
SELECT department_id, AVG(salary) as avg_salary FROM employees GROUP BY department_id;
+---------------+--------------+
| department_id | avg_salary |
+---------------+--------------+
| NULL | 7000.000000 |
| 10 | 4400.000000 |
| 20 | 9500.000000 |
| 30 | 4150.000000 |
| 40 | 6500.000000 |
| 50 | 3475.555556 |
| 60 | 5760.000000 |
| 70 | 10000.000000 |
| 80 | 8955.882353 |
| 90 | 19333.333333 |
| 100 | 8600.000000 |
| 110 | 10150.000000 |
+---------------+--------------+
#需求:查询各个department_id,job_id的平均工资
SELECT department_id,job_id,AVG(salary) avg_salary FROM employees GROUP BY department_id,job_id;
+---------------+------------+--------------+
| department_id | job_id | avg_salary |
+---------------+------------+--------------+
| NULL | SA_REP | 7000.000000 |
| 10 | AD_ASST | 4400.000000 |
| 20 | MK_MAN | 13000.000000 |
| 20 | MK_REP | 6000.000000 |
| 30 | PU_CLERK | 2780.000000 |
| 30 | PU_MAN | 11000.000000 |
| 40 | HR_REP | 6500.000000 |
| 50 | SH_CLERK | 3215.000000 |
| 50 | ST_CLERK | 2785.000000 |
| 50 | ST_MAN | 7280.000000 |
| 60 | IT_PROG | 5760.000000 |
| 70 | PR_REP | 10000.000000 |
| 80 | SA_MAN | 12200.000000 |
| 80 | SA_REP | 8396.551724 |
| 90 | AD_PRES | 24000.000000 |
| 90 | AD_VP | 17000.000000 |
| 100 | FI_ACCOUNT | 7920.000000 |
| 100 | FI_MGR | 12000.000000 |
| 110 | AC_ACCOUNT | 8300.000000 |
| 110 | AC_MGR | 12000.000000 |
+---------------+------------+--------------+
结论:当过滤条件中有聚合函数时,则此过滤条件必须声明在HAVING中。 当过滤条件中没有聚合函数时,则此过滤条件声明在WHERE中或HAVING中都可以。但是,