如何在 MySQL 中如果另一個列滿足條件而對某一列中的單元格進行求和?


為此,你可以使用聚合函式 SUM() 以及 GROUP BY 子句。我們首先建立一個表 -

mysql> create table DemoTable
   -> (
   -> EmployeeName varchar(20),
   -> JoiningDate date,
   -> Salary int
   -> );
Query OK, 0 rows affected (0.54 sec)

使用 insert 命令在表中插入一些記錄 -

mysql> insert into DemoTable values('David','2019-11-02',400);
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable values('Robert','2018-11-25',100);
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable values('Bob','2019-12-14',600);
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('Carol','2019-11-03',300);
Query OK, 1 row affected (0.23 sec)

使用 select 語句顯示錶中的所有記錄 -

mysql> select * from DemoTable;

這將會產生以下輸出 -

+--------------+-------------+--------+
| EmployeeName | JoiningDate | Salary |
+--------------+-------------+--------+
| David        | 2019-11-02  |    400 |
| Robert       | 2018-11-25  |    100 |
| Bob          | 2019-12-14  |    600 |
| Carol        | 2019-11-03  |    300 |
+--------------+-------------+--------+
4 rows in set (0.00 sec)

以下是如果另一個列滿足條件而對某一列中的單元格進行求和的查詢 -

mysql> select year(JoiningDate) as JoiningYear,
   -> month(JoiningDate) as JoiningMonth,
   -> sum(Salary) as Total,
   -> group_concat(EmployeeName) as Name
   -> from DemoTable
   -> group by JoiningYear,JoiningMonth;

這將會產生以下輸出 -

+-------------+--------------+-------+-------------+
| JoiningYear | JoiningMonth | Total | Name        |
+-------------+--------------+-------+-------------+
|        2018 |           11 |   100 | Robert      |
|        2019 |           11 |   700 | David,Carol |
|        2019 |           12 |   600 | Bob         |
+-------------+--------------+-------+-------------+
3 rows in set (0.04 sec)

更新於: 28-Feb-2020

877 次瀏覽

開啟你的 事業

透過完成課程獲得認證

入門
廣告
© . All rights reserved.