• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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

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

測試用資料

建立一張儲存學生成績用的 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)

參考資料

  • StackOverflow:How do I get the MIN() of two fields in Postgres?

分類:資料庫 標籤:PostgreSQL

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide