MariaDB SUM()
函式用於返回表示式求和的值。
語法:
SELECT SUM(aggregate_expression)
FROM tables
[WHERE conditions];
資料準備
在"testdb"
資料庫中建立一個"students"
表,並插入一些資料。參考以下建立語句 -
USE testdb;
DROP TABLE students;
-- 建立新表
CREATE TABLE students(
student_id INT NOT NULL AUTO_INCREMENT,
student_name VARCHAR(100) NOT NULL,
student_address VARCHAR(40) default NULL,
admission_date DATE,
score float(4, 1) default NULL,
PRIMARY KEY ( student_id )
);
-- 插入資料
INSERT INTO students
(student_id, student_name, student_address,score, admission_date)
VALUES(1,'Maxsu','Haikou', 99.5,'2017-01-07 00:00:00');
INSERT INTO students
(student_id, student_name, student_address, score, admission_date)
VALUES
(2,'Crurry','Beijing',86,'2016-05-07 00:00:00'),
(3,'JMaster','Beijing',91,'2016-05-07 00:00:00'),
(4,'Mahesh','Guangzhou',78,'2016-06-07 00:00:00'),
(5,'Kobe','Shanghai',89,'2016-02-07 00:00:00'),
(6,'Blaba','Shengzhen',100,'2016-08-07 00:00:00');
範例:
計算student_id
大於1
的Student
表的總分數。參考以下查詢語句 -
SELECT SUM(Score) AS "Total Score"
FROM students
WHERE student_id > 1;
執行上面查詢語句,得到以下結果 -
MariaDB [testdb]> SELECT SUM(Score) AS "Total Score"
-> FROM students
-> WHERE student_id > 1;
+-------------+
| Total Score |
+-------------+
| 444.0 |
+-------------+
1 row in set (0.00 sec)
可以使用SUM
函式的DISTINCT
子句來避免重複值的總和。
再插入一條重複的資料 -
INSERT INTO students
(student_name, student_address,score, admission_date)
VALUES('Maxsu','Haikou', 99.5,'2017-11-07 00:00:00');
當前資料庫中的記錄如下 -
MariaDB [testdb]> select * from students;
+------------+--------------+-----------------+----------------+-------+
| student_id | student_name | student_address | admission_date | score |
+------------+--------------+-----------------+----------------+-------+
| 1 | Maxsu | Haikou | 2017-01-07 | 99.5 |
| 2 | Crurry | Beijing | 2016-05-07 | 86.0 |
| 3 | JMaster | Beijing | 2016-05-07 | 91.0 |
| 4 | Mahesh | Guangzhou | 2016-06-07 | 78.0 |
| 5 | Kobe | Shanghai | 2016-02-07 | 89.0 |
| 6 | Blaba | Shengzhen | 2016-08-07 | 100.0 |
| 7 | Maxsu | Haikou | 2017-11-07 | 99.5 |
+------------+--------------+-----------------+----------------+-------+
7 rows in set (0.00 sec)
範例:
SELECT SUM(DISTINCT Score) AS "Total Score"
FROM students
WHERE student_name = 'Maxsu';
執行上面查詢語句,得到以下結果 -
MariaDB [testdb]> SELECT SUM(DISTINCT Score) AS "Total Score"
-> FROM students
-> WHERE student_name = 'Maxsu';
+-------------+
| Total Score |
+-------------+
| 99.5 |
+-------------+
1 row in set (0.00 sec)