調查局三等申論題
112年
[資訊科學組] 資料庫應用
第 一 題
📖 題組:
假設有如下團購紀錄關連式資料庫,請使用 SQL 回答下列相關問題。(每小題 5 分,共 20 分) Member(fb_account, name, mobile)PK: fb_account Group(group_code, start_datetime, end_datetime, item, unit_price)PK:group_code Buy_Record(fb_account, group_code, order_datetime, quantity) PK: fb_account+group_code FK: fb_account ref. Member(fb_account) FK: group_code ref. Group 註:查詢結果如非資料表的欄位名,請以別名形式,重新給予有意義的欄位名。
假設有如下團購紀錄關連式資料庫,請使用 SQL 回答下列相關問題。(每小題 5 分,共 20 分) Member(fb_account, name, mobile)PK: fb_account Group(group_code, start_datetime, end_datetime, item, unit_price)PK:group_code Buy_Record(fb_account, group_code, order_datetime, quantity) PK: fb_account+group_code FK: fb_account ref. Member(fb_account) FK: group_code ref. Group 註:查詢結果如非資料表的欄位名,請以別名形式,重新給予有意義的欄位名。
📝 此題為申論題,共 4 小題
小題 (一)
請列出 2023/01/01~2023/06/30 間有採購「綜合維他命」的成員及採購訊息,包括成員名稱、手機號碼、團號、物品、開團日期時間、結團日期時間、訂購日期、數量、消費金額,結果請依消費金額由多至少排序。
思路引導 VIP
本題測驗多表關聯(INNER JOIN)、日期區間條件過濾、衍生欄位運算與排序。解題時應先釐清所需欄位對應的資料表,透過 PK/FK 建立關聯,接著將「特定物品」與「訂購日期區間」加入 WHERE 條件,最後利用數量乘以單價產生「消費金額」衍生欄位,並使用 ORDER BY 進行遞減排序。
小題 (二)
請列出每團採購數量最多的成員及其採購訊息,包括成員名稱、手機號碼、團號、物品、數量、消費金額,結果請依採購數量由少至多排序顯示。
思路引導 VIP
看到「每團...最多...」的條件,應立即聯想到「分組取極值」的情境。解題關鍵在於使用「關聯式子查詢(Correlated Subquery)」找出各團的最高採購數量,再將此條件放在 WHERE 子句中進行主查詢過濾;同時需熟練運用 INNER JOIN 串接三張表取得完整資訊,並處理計算欄位的別名與排序。
小題 (三)
請列出目前尚在採購中的團購團訊息,包括團號、開團日期時間、結團日期時間、物品、目前累計總數量,結果請依開團日期時間由近至遠排序顯示。
思路引導 VIP
本題重點在於「聚合函數的應用」與「時間條件的過濾」。看到「累計總數量」需立刻聯想到使用 JOIN 結合群組(GROUP BY)與 SUM() 函數;「尚在採購中」則須利用當前系統時間(CURRENT_TIMESTAMP)進行區間判斷;最後需注意保留字處理與降冪(DESC)排序要求。
小題 (四)
請列出 2023 一、二兩個月份,參與團購團數>1 客戶的訊息,包括客戶名稱、手機號碼、參與的團數。
思路引導 VIP
解題關鍵在於辨識出需關聯 Member 與 Buy_Record 兩張表以獲取客戶資訊與訂購紀錄。接著需注意三個核心操作:使用 WHERE 篩選指定日期區間(2023年1至2月),使用 GROUP BY 進行客戶分組,並透過 HAVING 過濾出「參與團數 > 1」的聚合條件,最後以 AS 賦予有意義的欄位別名。