限時公開
即時精選

【🧠 面試實戰題 - SQL】 算出每個顧客的總花費(秒懂解法)

更新 發佈閱讀 5 分鐘

近期正好有機會參加遠端相關公司的筆試機會, 由於過往皆使用NoSQL為主要開發技能, 因此對於SQL相對較為不熟悉, 但沒關係, 我們還是保持著學習的積極態度來補足技能, 過程中相信許多人也會面臨跟我一樣的問題, 因此會將學習的歷程彙整成文章, 供大家參閱學習。

🧾 題目描述

我們有兩張資料表如下:

raw-image


❓ 問題

請寫一段 SQL,查詢出每位顧客的「總消費金額」,並依金額高低排序。

🧠 解題思路

• 顧客資訊在 customers 表,消費金額在 orders 表。

• 所以我們需要用 JOIN 把兩表連起來。

• 接著用 GROUP BY 來根據顧客做分組。

• 然後用 SUM() 算出總消費。

• 最後 ORDER BY 排序即可。


設計關聯

customers表與orders表會透過id與customer_id進行關聯。

raw-image


🛠️ 建立資料表語法

CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);

CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT NOT NULL,
amount INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);




➕ 新增訂單及客戶的資料

-- 新增顧客資料
INSERT INTO customers (id, name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');

-- 新增訂單資料
INSERT INTO orders (id, customer_id, amount) VALUES
(1, 1, 100),
(2, 1, 150),
(3, 2, 200);


🔍 先查詢出每位顧客的消費金額

這個步驟主要是讓我們清楚兩張表交集出來的結果, 以幫助我們下一步進行加總。

• SELECT: 所有的欄位。

• FROM: 以顧客表為主, 因為目標是查出每位顧客的xxx。

• JOIN: 透過JOIN來查詢訂單表並以顧客id關聯。

SELECT
*
FROM
customers
JOIN
orders ON customers.id = orders.customer_id
raw-image


✅ 查詢出每位顧客的「總消費金額」,並依金額高低排序

• SELECT: 顧客、總消費金額, 總消費金額的部份必須去訂單撈取並彙總。

• FROM: 以顧客表為主, 因為目標是查出每位顧客的xxx。

• JOIN: 透過JOIN來查詢訂單表並以顧客id關聯。

• GROUP BY: 由於每位顧客會有多筆訂單, 因此我們需要以顧客名稱聚合。

• SUM: 加總訂單金額。

• ORDER_BY: 總消費金額由高到低排序。

SELECT
customers.name,
SUM(orders.amount) AS total_spent
FROM
customers
JOIN
orders ON customers.id = orders.customer_id
GROUP BY
customers.name
ORDER BY
total_spent DESC;
raw-image


🔚 結語

這題雖然簡單,但背後涵蓋了面試中最常見的 SQL 技能組合, 如果你能清楚說出每一個語法為什麼用、背後的資料邏輯,就能在面試中加分不少。

過程中我們會將我們怎麼解題的邏輯、思路進一步拆解, 讓您也能懂背後真正的邏輯, 確保知識吸收, 以因應實戰面試。

如果你想看更多 SQL 題目、資料分析面試經驗或實戰範例,歡迎追蹤我的方格子, 我們後續會分享更多關於面試過程中的模擬實戰題目。

留言
avatar-img
留言分享你的想法!
avatar-img
阿Han的沙龍
140會員
306內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
你可能也想看
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
這篇文章分享了作者對銀行考試的準備和麵試的心得,包含了考試和面試的準備建議以及根據不同銀行的個人想法。如果你正準備銀行考試,這篇文章會給你一些有用的思路。
Thumbnail
這篇文章分享了作者對銀行考試的準備和麵試的心得,包含了考試和面試的準備建議以及根據不同銀行的個人想法。如果你正準備銀行考試,這篇文章會給你一些有用的思路。
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
Leetcode 精選75題 題目與題解 熱門考點 目錄 (持續更新中) 建議從左側目錄 或者 按Ctrl+F輸入關鍵字進行搜尋
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
高中數學主題練習—P計算
Thumbnail
高中數學主題練習—P計算
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News