MYSQL 当姓名一样的时候,工资求和
时间: 2025-06-10 21:13:33 浏览: 9
在 MySQL 中,可以使用 `GROUP BY` 和聚合函数 `SUM()` 来实现对相同姓名的记录进行工资求和。以下是详细的解决方案。
---
### 示例问题:当姓名一样的时候,工资求和
#### 问题描述
假设有一个表 `employees`,包含以下字段:
- `id`:员工 ID
- `name`:员工姓名
- `salary`:员工工资
要求:对于具有相同姓名的员工,计算他们的工资总和。
---
### 解决方案
以下是使用 MySQL 实现上述功能的代码:
```sql
-- 创建示例表 employees
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10, 2)
);
-- 插入示例数据
INSERT INTO employees (id, name, salary) VALUES
(1, 'Alice', 5000.00),
(2, 'Bob', 6000.00),
(3, 'Alice', 4000.00),
(4, 'Charlie', 7000.00),
(5, 'Bob', 3000.00);
-- 查询并按姓名分组,计算工资总和
SELECT
name,
SUM(salary) AS total_salary -- 工资总和
FROM employees
GROUP BY name; -- 按姓名分组
```
---
### 代码解释
1. **创建表**:
- 使用 `CREATE TABLE` 创建一个名为 `employees` 的表,包含三个字段:`id`、`name` 和 `salary`。
- `salary` 字段使用 `DECIMAL(10, 2)` 类型,表示最多 10 位数字,其中 2 位是小数部分。
2. **插入数据**:
- 使用 `INSERT INTO` 向表中插入一些示例数据,其中有些员工的姓名是重复的。
3. **查询与计算**:
- `SUM(salary) AS total_salary`:使用聚合函数 `SUM()` 计算每个姓名对应的工资总和,并将结果命名为 `total_salary`。
- `GROUP BY name`:按 `name` 字段分组,确保相同姓名的记录被归为一组。
4. **注意事项**:
- 如果某些记录的 `salary` 字段为 NULL,`SUM()` 函数会自动忽略这些值,不会影响合计结果。
- 如果需要进一步筛选(如只统计工资大于某个值的员工),可以结合 `HAVING` 子句使用。例如:
```sql
SELECT name, SUM(salary) AS total_salary
FROM employees
GROUP BY name
HAVING total_salary > 8000.00;
```
---
###
阅读全文
相关推荐











