文章

PostgreSQL - 第 10 天 - 聚合函數 (SUM, AVG, COUNT)

課程簡介

聚合函數是用來對一組數據進行計算並返回單一結果的函數。常見的聚合函數包括 SUMAVGCOUNT,它們通常用於計算數據的總和、平均值以及記錄的數量。這些函數對於進行數據分析和報表生成非常有用。


聚合函數概述

  • SUM:計算某個欄位數值的總和。
  • AVG:計算某個欄位數值的平均值。
  • COUNT:計算記錄的數量,常用來統計符合條件的行數。

這些聚合函數可以與 GROUP BY 子句一起使用,對數據進行分組計算。


使用 SUM 函數

SUM 函數用來計算某個數值欄位的總和。

語法

1
SELECT SUM(欄位名) FROM 表名 WHERE 條件;

範例

  1. 計算員工的總月薪

    查詢 員工 表中所有員工的月薪總和:

    1
    
    SELECT SUM(月薪) FROM 員工;
    
  2. 計算某個部門員工的總月薪

    查詢 員工 表中職位為「工程師」的所有員工的總月薪:

    1
    
    SELECT SUM(月薪) FROM 員工 WHERE 職位 = '工程師';
    

使用 AVG 函數

AVG 函數用來計算某個數值欄位的平均值。

語法

1
SELECT AVG(欄位名) FROM 表名 WHERE 條件;

範例

  1. 計算所有員工的平均月薪

    查詢 員工 表中所有員工的月薪平均值:

    1
    
    SELECT AVG(月薪) FROM 員工;
    
  2. 計算某部門員工的平均月薪

    查詢 員工 表中職位為「工程師」的員工的平均月薪:

    1
    
    SELECT AVG(月薪) FROM 員工 WHERE 職位 = '工程師';
    

使用 COUNT 函數

COUNT 函數用來計算符合條件的記錄數量。它可以計算某個欄位的非空值數量,也可以計算符合條件的行數。

語法

1
SELECT COUNT(欄位名) FROM 表名 WHERE 條件;

如果希望計算所有記錄數量(包括空值),則可以使用 COUNT(*)

範例

  1. 計算員工的總數

    查詢 員工 表中所有員工的總數:

    1
    
    SELECT COUNT(*) FROM 員工;
    
  2. 計算某職位員工的數量

    查詢 員工 表中職位為「工程師」的員工數量:

    1
    
    SELECT COUNT(*) FROM 員工 WHERE 職位 = '工程師';
    
  3. 計算某部門的非空月薪記錄數量

    查詢 員工 表中職位為「工程師」的員工月薪非空值的數量:

    1
    
    SELECT COUNT(月薪) FROM 員工 WHERE 職位 = '工程師' AND 月薪 IS NOT NULL;
    

與 GROUP BY 子句一起使用

聚合函數通常與 GROUP BY 子句一起使用,對資料進行分組計算。GROUP BY 會根據指定的欄位對數據進行分組,然後對每個組進行聚合計算。

語法

1
SELECT 欄位1, 聚合函數(欄位2) FROM 表名 GROUP BY 欄位1;

範例

  1. 按職位分組,計算每個職位的總月薪

    查詢 員工 表中按 職位 分組後,每個職位的月薪總和:

    1
    
    SELECT 職位, SUM(月薪) FROM 員工 GROUP BY 職位;
    
  2. 按職位分組,計算每個職位的平均月薪

    查詢 員工 表中按 職位 分組後,每個職位的月薪平均值:

    1
    
    SELECT 職位, AVG(月薪) FROM 員工 GROUP BY 職位;
    
  3. 按部門分組,計算每個部門的員工數量

    查詢 員工 表中按 部門 分組後,每個部門的員工數量:

    1
    
    SELECT 部門, COUNT(*) FROM 員工 GROUP BY 部門;
    

本日總結

今天我們學習了三個常用的聚合函數:SUMAVGCOUNT。這些函數能幫助我們快速地對數據進行計算和統計。與 GROUP BY 子句搭配使用,可以對數據進行分組統計,對數據分析和報表生成非常有幫助。明天我們將學習如何使用 HAVING 子句對分組結果進行過濾。

本文章以 CC BY 4.0 授權