Categories: 資料庫

PostgreSQL 資料庫計算最大值、最小值 GREATEST、LEAST 函數教學與範例

介紹如何在 PostgreSQL 資料庫中使用 GREATESTLEAST 函數,計算多欄位的最大值與最小值。

測試用資料

建立一張儲存學生成績用的 grades 資料表:

-- 建立 grades 資料表
CREATE TABLE grades (
  id SERIAL PRIMARY KEY, -- 序號
  name VARCHAR(255),     -- 名字
  score_a SMALLINT,      -- 成績 A
  score_b SMALLINT,      -- 成績 B
  score_c SMALLINT       -- 成績 C
);

插入一些學生成績的資料:

-- 插入測試資料
INSERT INTO grades (name, score_a, score_b, score_c)
  VALUES ('Jake', 99, 87, 84), ('Harry', 79, 81, 94),
         ('Robert', 92, 67, 54), ('Michael', 91, 97, 74);

查詢 grades 資料表中的資料:

-- 查詢 grades 資料表內容
SELECT * FROM grades;
 id |  name   | score_a | score_b | score_c
----+---------+---------+---------+---------
  1 | Jake    |      99 |      87 |      84
  2 | Harry   |      79 |      81 |      94
  3 | Robert  |      92 |      67 |      54
  4 | Michael |      91 |      97 |      74
(4 rows)

這張表格中的每一筆資料就是每一位學生的三次考試成績。

GREATEST 取最大值

GREATEST 可以用來計算多個欄位值之中的最大值。

假設我們想要計算每位學生在三次考試成績之中,成績最高的那一次是幾分,就可以使用 GREATEST 函數:

-- 查詢每位學生三次成績的最高分
SELECT GREATEST(score_a, score_b, score_c) FROM grades;
 greatest
----------
       99
       94
       92
       97
(4 rows)

若要根據三次成績的最高分來排序,則可執行:

-- 根據三次成績的最高分來排序
SELECT * FROM grades ORDER BY GREATEST(score_a, score_b, score_c) DESC;
 id |  name   | score_a | score_b | score_c
----+---------+---------+---------+---------
  1 | Jake    |      99 |      87 |      84
  4 | Michael |      91 |      97 |      74
  2 | Harry   |      79 |      81 |      94
  3 | Robert  |      92 |      67 |      54
(4 rows)

LEAST 取最小值

LEAST 函數可以用來取得多個欄位值的最小值,若要查詢每位學生三次成績的最低分,則可執行:

-- 查詢每位學生三次成績的最低分
SELECT LEAST(score_a, score_b, score_c) FROM grades;
 least
-------
    84
    79
    54
    74
(4 rows)

若要根據三次成績的最低分來排序,則可執行:

-- 根據三次成績的最高分來排序
SELECT * FROM grades ORDER BY LEAST(score_a, score_b, score_c) ASC;
 id |  name   | score_a | score_b | score_c
----+---------+---------+---------+---------
  3 | Robert  |      92 |      67 |      54
  4 | Michael |      91 |      97 |      74
  2 | Harry   |      79 |      81 |      94
  1 | Jake    |      99 |      87 |      84
(4 rows)

參考資料

Share
Published by
Office Guide
Tags: PostgreSQL

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago