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)