SQL 算術(shù)函數(shù)
1. 前言
慕課解釋?zhuān)篠QL 內(nèi)置的算術(shù)函數(shù)主要用于對(duì)
數(shù)值類(lèi)型
的字段進(jìn)行算數(shù)運(yùn)算
。
本小節(jié),我們將一起學(xué)習(xí) SQL 函數(shù)中的算術(shù)函數(shù)。
有時(shí)候,我們需要對(duì)數(shù)據(jù)表中的數(shù)值字段進(jìn)行算術(shù)運(yùn)算,如需要對(duì)分?jǐn)?shù)score
取兩位小數(shù)等;為此,SQL 提供了方便的算術(shù)函數(shù)。
本小節(jié)測(cè)試數(shù)據(jù)如下,請(qǐng)先在數(shù)據(jù)庫(kù)中執(zhí)行:
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. 實(shí)例
在 SQL 中,常見(jiàn)的算術(shù)函數(shù)有三個(gè),它們分別是:
函數(shù)名 | 作用 |
---|---|
ABS | 取絕對(duì)值 |
MOD | 取余數(shù),接受兩個(gè)參數(shù),第一個(gè)為數(shù)值,第二個(gè)為除數(shù) |
ROUND | 四舍五入,接受兩個(gè)參數(shù),第一個(gè)為數(shù)值,第二個(gè)是小數(shù)位數(shù) |
2.1 例1 取分?jǐn)?shù)絕對(duì)值
在 imooc_user 的用戶(hù)中,有的人懶惰且經(jīng)常逃課,因此其分?jǐn)?shù)是負(fù)數(shù),我們可以通過(guò)ABS
來(lái)得到他分?jǐn)?shù)的絕對(duì)值:
SELECT ABS(score) FROM imooc_user WHERE id=2;
結(jié)果:
+-------------------+
| ABS(score) |
+-------------------+
| 9.229999542236328 |
+-------------------+
2.2 例2 取年齡的余數(shù)
我們還可以通過(guò)MOD
來(lái)得到用戶(hù)年齡的余數(shù),如對(duì)5
取余:
SELECT MOD(age,5) FROM imooc_user WHERE id=1;
結(jié)果:
+------------+
| MOD(age,5) |
+------------+
| 3 |
+------------+
2.3 例3 取分?jǐn)?shù)的 1 位小數(shù)
我們的分?jǐn)?shù)錄入的時(shí)候是2
位小數(shù)的,但是我們可能需要1
位的有效小數(shù):
SELECT ROUND(score,1) FROM imooc_user WHERE id=3;
結(jié)果:
+----------------+
| ROUND(score,1) |
+----------------+
| 1.3 |
+----------------+
Tips: PostgreSQL 不支持 ROUND 函數(shù)。
3. 小結(jié)
- 一般而言,數(shù)值運(yùn)算函數(shù)用的不多,但是
ROUND
在數(shù)據(jù)分析的時(shí)候還是非常實(shí)用的。