亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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在數據分析的時候還是非常實用的。