OceanBase SUM

2021-06-24 15:50 更新

?SUM? 函數返回參數中指定列的和。此函數將可以隱式轉換為數值數據類型的任何數值數據類型或任何非數值數據類型作為參數。 函數返回與參數的數值數據類型相同的數據類型。

語法

SUM([ DISTINCT | UNQIUE | ALL ] expr) [ OVER (analytic_clause) ]

作為分析函數使用時,您需要使用窗口函數的完整語法,它對一組行的集合進行計算并返回多個值。作為聚合函數使用時,該函數對一組行的集合進行聚合計算,結果只能返回一個值,此時不需要加 ?OVER? 關鍵字。

參數

參數

說明

DISTINCT

去除重復行,且忽略值為 NULL 的行。

UNQIUE

去除重復行,且忽略值為 NULL 的行。

ALL

返回所有值,包含重復行,且忽略值為 NULL 的行。

expr

可為數值、字符、日期型或其它類型的數據列或表達式。

OVER

使用 OVER 子句定義窗口進行計算。

注意 
如果您指定了 ?DISTINCT? 或 ?UNIQUE? 關鍵字,則 ?analytic_clause? 中不允許出現 ?order_by_clause? 和 ?windowing_clause?。

返回類型

返回與 ?expr? 相同數據類型的值。

示例

分析函數示例

創(chuàng)建表 employees,并向里面插入數據,執(zhí)行以下語句:

CREATE TABLE employees(manager_id INT,last_name varchar(50),hiredate varchar(50),SALARY INT);
INSERT INTO employees VALUES(300, 'Wei',  '2019-09-11',23600);     
INSERT INTO employees VALUES(200, 'Red', '2019-11-05', 23800);
INSERT INTO employees VALUES(100, 'Part',  '2018-10-01',24000);     
INSERT INTO employees VALUES(200, 'Ross',  '2019-06-11',23500);     
INSERT INTO employees VALUES(200, 'Bell', '2019-05-25', 23000);
INSERT INTO employees VALUES(200, 'Part',  '2018-06-11',24500);    
INSERT INTO employees VALUES(100, 'De Haan', '2018-05-01',11000);      
INSERT INTO employees VALUES(100, 'Errazuriz', '2017-07-21', 1400);
INSERT INTO employees VALUES(100, 'Hartstein', '2019-05-01',14000);     
COMMIT;

計算工資總額,執(zhí)行以下語句:

SELECT manager_id, last_name, salary, SUM(salary) OVER (PARTITION BY manager_id 
ORDER BY salary RANGE UNBOUNDED PRECEDING) l_csum
FROM employees ORDER BY manager_id, last_name, salary, l_csum;

查詢結果如下:

+------------+-----------+--------+--------+
| MANAGER_ID | LAST_NAME | SALARY | L_CSUM |
+------------+-----------+--------+--------+
|        100 | De Haan   |  11000 |  12400 |
|        100 | Errazuriz |   1400 |   1400 |
|        100 | Hartstein |  14000 |  26400 |
|        100 | Part      |  24000 |  50400 |
|        200 | Bell      |  23000 |  23000 |
|        200 | Part      |  24500 |  94800 |
|        200 | Red       |  23800 |  70300 |
|        200 | Ross      |  23500 |  46500 |
|        300 | Wei       |  23600 |  23600 |
+------------+-----------+--------+--------+

聚合函數示例

計算工資總額,執(zhí)行以下語句:

SELECT SUM(salary) FROM employees;

查詢結果如下:

+-------------+
| SUM(SALARY) |
+-------------+
|      168800 |
+-------------+


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號