SQL 算術函數
1. 前言
慕課解釋:SQL 內置的算術函數主要用于對
數值類型
的字段進行算數運算
。
本小節,我們將一起學習 SQL 函數中的算術函數。
有時候,我們需要對數據表中的數值字段進行算術運算,如需要對分數score
取兩位小數等;為此,SQL 提供了方便的算術函數。
本小節測試數據如下,請先在數據庫中執行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
id int PRIMARY KEY,
username varchar(20),
score float,
age int
);
INSERT INTO imooc_user(id,username,score,age)
VALUES (1,'peter',10.12,18),(2,'pedro',-9.23,24),(3,'jerry',1.27,22);
2. 實例
在 SQL 中,常見的算術函數有三個,它們分別是:
函數名 | 作用 |
---|---|
ABS | 取絕對值 |
MOD | 取余數,接受兩個參數,第一個為數值,第二個為除數 |
ROUND | 四舍五入,接受兩個參數,第一個為數值,第二個是小數位數 |
2.1 例1 取分數絕對值
在 imooc_user 的用戶中,有的人懶惰且經常逃課,因此其分數是負數,我們可以通過ABS
來得到他分數的絕對值:
SELECT ABS(score) FROM imooc_user WHERE id=2;
結果:
+-------------------+
| ABS(score) |
+-------------------+
| 9.229999542236328 |
+-------------------+
2.2 例2 取年齡的余數
我們還可以通過MOD
來得到用戶年齡的余數,如對5
取余:
SELECT MOD(age,5) FROM imooc_user WHERE id=1;
結果:
+------------+
| MOD(age,5) |
+------------+
| 3 |
+------------+
2.3 例3 取分數的 1 位小數
我們的分數錄入的時候是2
位小數的,但是我們可能需要1
位的有效小數:
SELECT ROUND(score,1) FROM imooc_user WHERE id=3;
結果:
+----------------+
| ROUND(score,1) |
+----------------+
| 1.3 |
+----------------+
Tips: PostgreSQL 不支持 ROUND 函數。
3. 小結
- 一般而言,數值運算函數用的不多,但是
ROUND
在數據分析的時候還是非常實用的。