1. 程式人生 > SQL入門教學 >36 SQL 算術函式

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