阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 調查特種考試_三等_資訊科學組:資料庫應用#116219
科目:公職◆資料庫應用
年份:112年
排序:0

題組內容

二、假設有如下團購紀錄關連式資料庫,請使用 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 
註:查詢結果如非資料表的欄位名,請以別名形式,重新給予有意義的欄位名。

申論題內容

(一)請列出 2023/01/01~2023/06/30 間有採購「綜合維他命」的成員及採購訊息,包括成員名稱、手機號碼、團號、物品、開團日期時間、結團日期時間、訂購日期、數量、消費金額,結果請依消費金額由多至少 排序。

詳解 (共 1 筆)

詳解 提供者:hchungw

要查詢2023/01/01~2023/06/30間有採購「綜合維他命」的成員及採購訊息,並包含成員名稱、手機號碼、團號、物品、開團日期時間、結團日期時間、訂購日期、數量、消費金額,並依消費金額由多至少排序,可以使用以下SQL查詢:

 SELECT 
    M.name AS 成員名稱,
    M.mobile AS 手機號碼,
    G.group_code AS 團號,
    G.item AS 物品,
    G.start_datetime AS 開團日期時間,
    G.end_datetime AS 結團日期時間,
    B.order_datetime AS 訂購日期,
    B.quantity AS 數量,
    (B.quantity * G.unit_price) AS 消費金額
FROM 
    Member M
JOIN 
    Buy_Record B ON M.fb_account = B.fb_account
JOIN 
    `Group` G ON B.group_code = G.group_code
WHERE 
    G.item = '綜合維他命'
    AND B.order_datetime BETWEEN '2023-01-01' AND '2023-06-30'
ORDER BY 
    消費金額 DESC;

解釋:

  1. SELECT 子句:

    • M.name AS 成員名稱: 顯示成員名稱。
    • M.mobile AS 手機號碼: 顯示成員手機號碼。
    • G.group_code AS 團號: 顯示團購代碼。
    • G.item AS 物品: 顯示購買的物品名稱。
    • G.start_datetime AS 開團日期時間: 顯示開團日期時間。
    • G.end_datetime AS 結團日期時間: 顯示結團日期時間。
    • B.order_datetime AS 訂購日期: 顯示訂購日期。
    • B.quantity AS 數量: 顯示訂購數量。
    • (B.quantity * G.unit_price) AS 消費金額: 計算消費金額。
  2. FROM 子句:

    • 進行三個表格的連接:Member, Buy_Record, 和 Group。
  3. JOIN 子句:

    • JOIN Buy_Record B ON M.fb_account = B.fb_account: 連接Member和Buy_Record表,基於fb_account字段。
    • JOIN Group G ON B.group_code = G.group_code: 連接Buy_Record和Group表,基於group_code字段。
  4. WHERE 子句:

    • G.item = '綜合維他命': 選擇購買的物品是「綜合維他命」。
    • B.order_datetime BETWEEN '2023-01-01' AND '2023-06-30': 選擇訂購日期在2023/01/01至2023/06/30之間。
  5. ORDER BY 子句:

    • 按消費金額由多至少排序。

這個查詢將返回滿足條件的記錄,並以消費金額降序排列。