題組內容
二、假設有如下團購紀錄關連式資料庫,請使用 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 筆)
詳解
要查詢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;
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;
解釋:
-
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, Buy_Record, 和 Group。
-
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字段。
-
WHERE 子句:
- G.item = '綜合維他命': 選擇購買的物品是「綜合維他命」。
- B.order_datetime BETWEEN '2023-01-01' AND '2023-06-30': 選擇訂購日期在2023/01/01至2023/06/30之間。
-
ORDER BY 子句:
- 按消費金額由多至少排序。
這個查詢將返回滿足條件的記錄,並以消費金額降序排列。