CodeGym /課程 /SQL SELF /用 SUM() 做資料加總 — 語法跟範例

用 SUM() 做資料加總 — 語法跟範例

SQL SELF
等級 7 , 課堂 2
開放

想像一下... 你手上有一大串超市的購物清單。你想知道最後到底花了多少錢。你總不會自己一個一個加吧?但店家早就把這些都存進資料庫了,所以你拿到的發票金額一定是對的。很有可能,在他們的 app 裡,今天的主角——SUM() 函數就在幫忙!這是一個聚合函數,可以把數字型態欄位的值全部加起來。

SUM() 的語法

SUM() 這個函數看起來就跟它的名字一樣簡單,不過我們還是來拆解一下:

SELECT SUM(欄位)
FROM 資料表;

這個函數會把指定欄位裡的所有值加總起來。但說真的:這裡不會有什麼神奇的文字或日期加法!只能加數字啦。

SUM() 的使用範例

我們先從簡單的例子開始。假設有個 salaries 資料表,裡面存著員工的薪水:

employee_id salary
1 50000
2 60000
3 55000
4 75000

範例 1:加總所有薪水

你想知道公司總共要發多少薪水。這樣做就對了:

SELECT SUM(salary) AS total_salary
FROM salaries;

結果:

total_salary
240000

這裡發生了什麼? PostgreSQL 把 salary 欄位的所有值 (50000 + 60000 + 55000 + 75000) 加起來,然後用 total_salary 這個新欄位名稱回傳結果。

範例 2:有條件的加總

假設你只想知道薪水超過 55,000 的員工總薪資。這時就要用我們最愛的 WHERE

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

結果:

high_salary_total
135000

這裡發生什麼? PostgreSQL 先用 WHERE salary > 55000 過濾,只留下薪水 60000 跟 75000 的那兩筆,然後把這兩個加起來 (60000 + 75000)。

3. SUM() 的一些小細節

NULL 會怎麼影響 SUM()?就像我們看到的,NULL 就是「什麼都沒有」,SUM() 算的時候會直接跳過它。來看個例子:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

如果我們想知道總薪資:

SELECT SUM(salary) AS total_salary
FROM salaries;

結果:

total_salary
185000

為什麼是「185000」不是「NULL」? PostgreSQL 算總和的時候,NULL 直接被無視啦。

進階 SUM() 查詢範例

範例 1:加總跟過濾一起來

想像有個 sales 資料表,存著銷售資料。它長這樣:

product_id amount
1 150
2 200
3 NULL
1 100

你想知道 product_id = 1 這個產品的總銷售額 amount

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

結果:

total_sales
150

範例 2:加總再做額外運算

再回到 salaries 資料表。你想知道總薪資比 200,000 多多少:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

結果:

surplus
40000

SUM() 常見的錯誤

對非數字資料用 SUM():如果你不小心拿來加文字,會直接報錯。記得檢查欄位的資料型態喔。

忽略 NULL:新手常常忘記 NULL 不會被算進去,結果算出來的數字怪怪的。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION