MariaDB Sum()函式


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');

1. SUM()函式與單表示式

範例:

計算student_id大於1Student表的總分數。參考以下查詢語句 -

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)

2. SUM()函式與DISTINCT子句

可以使用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)