MySQL(32)如何使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)?

聚合函数用于对一组值执行计算,并返回单一的结果。常用的聚合函数包括 COUNTSUMAVGMAXMIN。这些函数通常与 GROUP BY 子句结合使用,以便对数据进行分组和汇总。下面详细介绍每个函数的用法及其应用场景,并给出相应的代码示例。

示例数据库和表结构

假设我们有一个公司数据库,其中有两个表:employeesdepartments

-- 创建数据库
CREATE DATABASE company;

-- 选择数据库
USE company;

-- 创建表 departments
CREATE TABLE departments (
    dept_id INT AUTO_INCREMENT PRIMARY KEY,
    dept_name VARCHAR(100) NOT NULL
);

-- 创建表 employees
CREATE TABLE employees (
    emp_id INT AUTO_INCREMENT PRIMARY KEY,
    emp_name VARCHAR(100) NOT NULL,
    emp_position VARCHAR(100),
    emp_salary DECIMAL(10, 2),
    hire_date DATE,
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);

-- 插入示例数据到 departments 表
INSERT INTO departments (dept_name)
VALUES 
('HR'),
('Engineering'),
('Marketing');

-- 插入示例数据到 employees 表
INSERT INTO employees (emp_name, emp_position, emp_salary, hire_date, dept_id)
VALUES 
('John Doe', 'Manager', 75000.00, '2023-10-01', 1),
('Jane Smith', 'Developer', 60000.00, '2023-09-01', 2),
('Alice Johnson', 'Analyst', 50000.00, '2023-08-01', 1),
('Bob Brown', 'Developer', 70000.00, '2023-07-01', 2),
('Charlie Brown', 'Tester', 55000.00, '2023-11-01', 3),
('Emma White', 'Developer', 60000.00, '2023-08-20', 2);

1. COUNT()

COUNT() 函数用于统计行的数量。它可以统计所有行的数量,或者特定列中非空值的数量。

示例:统计员工总数
SELECT COUNT(*) AS total_employees
FROM employees;

结果:

total_employees
---------------
6
示例:统计每个部门的员工数量
SELECT dept_id, COUNT(*) AS employee_count
FROM employees
GROUP BY dept_id;

结果:

dept_id | employee_count
--------|----------------
1       | 2
2       | 3
3       | 1

2. SUM()

SUM() 函数用于求和。它通常用于计算一列数值的总和。

示例:计算所有员工的总薪水
SELECT SUM(emp_salary) AS total_salary
FROM employees;

结果:

total_salary
-------------
370000.00
示例:计算每个部门的总薪水
SELECT dept_id, SUM(emp_salary) AS total_salary
FROM employees
GROUP BY dept_id;

结果:

dept_id | total_salary
--------|--------------
1       | 125000.00
2       | 190000.00
3       | 55000.00

3. AVG()

AVG() 函数用于计算平均值。

示例:计算所有员工的平均薪水
SELECT AVG(emp_salary) AS average_salary
FROM employees;

结果:

average_salary
---------------
61666.67
示例:计算每个部门的平均薪水
SELECT dept_id, AVG(emp_salary) AS average_salary
FROM employees
GROUP BY dept_id;

结果:

dept_id | average_salary
--------|----------------
1       | 62500.00
2       | 63333.33
3       | 55000.00

4. MAX()

MAX() 函数用于找到最大的值。

示例:找到最高的薪水
SELECT MAX(emp_salary) AS max_salary
FROM employees;

结果:

max_salary
-----------
75000.00
示例:找到每个部门中的最高薪水
SELECT dept_id, MAX(emp_salary) AS max_salary
FROM employees
GROUP BY dept_id;

结果:

dept_id | max_salary
--------|------------
1       | 75000.00
2       | 70000.00
3       | 55000.00

5. MIN()

MIN() 函数用于找到最小的值。

示例:找到最低的薪水
SELECT MIN(emp_salary) AS min_salary
FROM employees;

结果:

min_salary
-----------
50000.00
示例:找到每个部门中的最低薪水
SELECT dept_id, MIN(emp_salary) AS min_salary
FROM employees
GROUP BY dept_id;

结果:

dept_id | min_salary
--------|------------
1       | 50000.00
2       | 60000.00
3       | 55000.00

结合多个聚合函数

您可以在一个查询中同时使用多个聚合函数,以获取更多统计信息。

示例:获取每个部门的员工数量、总薪水、平均薪水、最高薪水和最低薪水
SELECT dept_id, 
       COUNT(*) AS employee_count, 
       SUM(emp_salary) AS total_salary,
       AVG(emp_salary) AS average_salary,
       MAX(emp_salary) AS max_salary,
       MIN(emp_salary) AS min_salary
FROM employees
GROUP BY dept_id;

结果:

dept_id | employee_count | total_salary | average_salary | max_salary | min_salary
--------|----------------|--------------|----------------|------------|-----------
1       | 2              | 125000.00    | 62500.00       | 75000.00   | 50000.00
2       | 3              | 190000.00    | 63333.33       | 70000.00   | 60000.00
3       | 1              | 55000.00     | 55000.00       | 55000.00   | 55000.00

小结

聚合函数 COUNTSUMAVGMAXMIN 是 SQL 中非常有用的工具,可以帮助您对数据进行统计和汇总。通过与 GROUP BY 子句结合使用,这些函数可以生成各种统计报告,适用于数据分析和业务决策。上述示例展示了如何在不同情况下使用这些聚合函数,以实现复杂的数据查询和分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辞暮尔尔-烟火年年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值