地特四等申論題
107年
[統計] 資料處理概要
第 一 題
📖 題組:
五、有一資料庫記載一些客戶資料,和他們下訂單訂購貨物的資訊如下: 客戶(身分證字號,姓名,電話,地址,年齡) 貨品(貨品編號,貨名,價格,庫存量) 訂單(貨品編號,身分證字號,訂貨日期,訂購數量) 請用 SQL 回答下列查詢。 (一)找出所有年齡大於 60 歲(年齡>60),所下訂單之訂貨日期為 20180101 的客戶,列出他們的姓名和地址。(10 分) (二)找出年齡低於 20 歲(年齡<20)的客戶,列出他們的姓名,電話和在 2017 年(20170101<=訂貨日期<=20171231)裡下訂單的次數。(10 分)
五、有一資料庫記載一些客戶資料,和他們下訂單訂購貨物的資訊如下: 客戶(身分證字號,姓名,電話,地址,年齡) 貨品(貨品編號,貨名,價格,庫存量) 訂單(貨品編號,身分證字號,訂貨日期,訂購數量) 請用 SQL 回答下列查詢。 (一)找出所有年齡大於 60 歲(年齡>60),所下訂單之訂貨日期為 20180101 的客戶,列出他們的姓名和地址。(10 分) (二)找出年齡低於 20 歲(年齡<20)的客戶,列出他們的姓名,電話和在 2017 年(20170101<=訂貨日期<=20171231)裡下訂單的次數。(10 分)
📝 此題為申論題,共 2 小題
小題 (一)
找出所有年齡大於 60 歲(年齡>60),所下訂單之訂貨日期為 20180101 的客戶,列出他們的姓名和地址。(10 分)
思路引導 VIP
看到此題,首先應釐清需要查詢的目標欄位(姓名、地址)與篩選條件分別橫跨「客戶」(年齡>60)與「訂單」(訂貨日期='20180101')兩個資料表。因此,必須透過共同欄位「身分證字號」將兩表進行內部連接(INNER JOIN)或使用子查詢(Subquery),並加上 WHERE 條件完成過濾。考慮到同一客戶當天可能有多筆訂單,思考時應加入 DISTINCT 確保輸出結果不重複。
小題 (二)
找出年齡低於 20 歲(年齡<20)的客戶,列出他們的姓名,電話和在 2017 年(20170101<=訂貨日期<=20171231)裡下訂單的次數。(10 分)
思路引導 VIP
看到「下訂單的次數」,必須立刻聯想到彙總函數 COUNT() 與群組子句 GROUP BY 的搭配使用。解題時需透過主外鍵「身分證字號」將「客戶」與「訂單」兩資料表結合(JOIN),並精準設定年齡與訂貨日期的過濾條件。