<h1> 期中考1 </h1> <h2> 第一題 </h2> <pre> <strong> 1. 請找出 skill_ test 資料庫中,Students 表共有幾個欄位及各個欄位名(10%) (1)共X個欄位,欄位名(手打)(10%) </strong> </pre> ```sql= select * from skill_test.students 共10欄位 學號 班級座號 姓名 出生年月日 身分證號碼 住址 家長 電話 科別 畢業國中 ``` <hr> <h2> 第三題 </h2> <pre> <strong> 3.資料庫northwind,資料表 orders,找出付款方式(payment_type)是 Credit Card 列出收件人(ship_name),收件地址(ship_address)及訂購日期(order_date)(10%) </strong> </pre> ```sql= select ship_name , ship_address , order_date from northwind.orders where payment_type = 'Credit Card' ``` <hr> <h2> 第四題 </h2> <pre> <strong> 4.資料庫 skill_ test,資料表 students,找出畢業國中是中山國中且是男生的學生, 列出"學號","姓名","身份證","畢業國中"(15%) </strong> </pre> ```sql= select * from skill_test.students where 畢業國中 like '%中山國中%' and 身分證號碼 like '_1%' ``` <hr> <h2> 第五題 </h2> <pre> <strong> 5.資料庫 skill_test, 資料表 sales,交易時間88年4~10月間交易, 交易數量為前5名的資料,列出所有欄位(15%) </strong> </pre> ```sql= select * from skill_test.sales where 交易年= 88 and 交易月 between 4 and 10 order by 數量 desc limit 5; ``` <hr> <h2> 第六題 </h2> <pre> <strong> 6.資料庫 skill_test,資料表 students,列出全校所有科別(不重複), 統計出科別數(10%) *做2個sql </strong> </pre> ```sql= select distinct 科別 from skill_test.students; select count(distinct 科別) from skill_test.students; ``` <hr> <h2> 第七題 </h2> <pre> <strong> 7.資料庫 skill_test,資料表 records,統計有請假的學生,各假別的總和, 並列出請公假最多的前5名學生 列出所有欄位(20%) </strong> </pre> ```sql= select 班級座號, 年月日, sum(公假), sum(事假), sum(病假) from skill_test.records group by 班級座號 having (sum(公假)+sum(事假)+sum(病假)) > 0 order by sum(公假) desc limit 5; ``` <br> <h1> 期末考 </h1> <h2> 第一題 </h2> <pre> <strong> 01.乙檢-查詢業務部門有哪些員工,及主管是誰 1.使用 where(10%) 2.使用 inner join (10%) </strong> </pre> <span style='color: tomato'>資料表:員工資料表(employee)&部門資料表(dept)</span> <span style='color: green'>顯示欄位:姓名,部門名稱,主管姓名</span> <span style='color: blue'>Hint:上課題目,只多了"業務部門”條件限制一使用like</span> <span>使用where</span> ```sql= select e.姓名 , d.部門名稱 , d.主管姓名 from employee e , dept d where e.部門代號 = d.部門代號 and d.部門名稱 like '業務%' ``` <span>使用inner join</span> ```sql= select e.姓名 , d.部門名稱 , d.主管姓名 from employee e join dept d on e.部門代號 = d.部門代號 and d.部門名稱 like '業務%' ``` <hr> <h2> 第二題 </h2> <pre> <strong> 02.乙檢-查詢業務部門各部門在90年業績總額(銷售總額) 40% </strong> </pre> <span style='color: tomato'>資料表:員工資料表(employee)&部門資料表(dept)&銷售資料表(sales)&產品資料表(product)</span> <span style='color: green'>顯示欄位:部門名稱,產品名稱,銷售額</span> <span style='color: blue'>Hint:員工資料表和部門資料表先join,銷售資料表和產品資料表join 再將2個結果join.要 group by,要 sum</span> ```sql= select ed.部門名稱, p.產品名稱 , sum(s.數量 * p.單價) as 銷售額 from sales s join product p on s.產品代號 = p.產品代號 join (select e.姓名 , e.部門代號 , d.部門名稱, d.主管姓名 from employee e join dept d on e.部門代號 = d.部門代號) as ed on ed.姓名 = s.業務姓名 where 交易年 = 90 group by 部門名稱; ``` <hr> <h2> 第三題 </h2> <pre> <strong> 03. 乙檢-查詢業務在91年整年度的對各個不同的客戶的業續總額,一個客戶一筆統計資料, 最後先按業務姓名排序,再按鎖售總額排序 1.使用 where (15%) 2.使用 innerjoin (15%) </strong> </pre> <span style='color: tomato'>資料表:銷售資料表(sales1)&產品資料表(product) &客戶資料表(customer)</span> <span style='color: green'>顯示欄位:寶號,業務姓名,產品名稱,銷售額</span> <span>使用where</span> ```sql= select c.寶號,s1.業務姓名 , p.產品名稱 ,s1.數量_91年 * p.單價 as 銷售額 from customer c, sales1 s1, product p where c.客戶代號 = s1.客戶代號 and p.產品代號 = s1.產品代號 order by 業務姓名, 銷售額; ``` <span>使用inner join</span> ```sql= select c.寶號 , s1.業務姓名, p.產品名稱 , s1.數量_91年 * p.單價 as 銷售額 from customer c join sales1 s1 on c.客戶代號 = s1.客戶代號 join product p on p.產品代號 = s1.產品代號 order by 業務姓名, 銷售額; ``` <hr> <h2> 第四題 </h2> <pre> <strong> 04.乙檢-查詢某班級,學生整學期缺曠總數大於10節 座號尾數1號找101 班,2號找102 班,依此類推,33號找103班,10,20,30號為110班 對缺曠總數排序(+5%) </strong> </pre> <span style='color: tomato'>資料表:請假記錄資料表(records)&學生基本資料表(students)</span> <span style='color: green'>顯示欄位:班級座號,姓名,曠課總數,家長,住址</span> <span style='color: blue'>Hint:上課題目,過濾使用 like,總數是用 group by 出來的,所以過濾條件使用 having (20%)</span> <span>注意班級 這裡使用110班作為舉例</span> ```sql= select r.班級座號 , s.姓名 , sum(r.曠課) as 曠課總數, s.家長 , s.住址 from records r , students s where r.班級座號 = s.班級座號 group by 班級座號 having 班級座號 like '110%' and 曠課總數 > 10 order by 曠課總數 desc ; ``` <hr> <h2> 第五題 </h2> <pre> <strong> 05.乙檢-查詢業務在90年各產品的交易數量、交易額及賣給那位客戶,交易額由大到小排序 1.使用 where(10%) 2.使用 inner join (10%) </strong> </pre> <span style='color: tomato'>資料表:交易資料表(sales)&產品資料表(product)&客戶資料表(customer)</span> <span style='color: green'>顯示欄位:業務姓名,寶號,產品名稱,數量,交易額</span> <span style='color: blue'>Hint:上課題目,新增了排序</span> <span>使用where</span> ```sql= select s.業務姓名 , c.寶號 , p.產品名稱 , s.數量 , s.數量 * p.單價 as 交易額 from sales s , product p , customer c where s.產品代號 = p.產品代號 and s.客戶代號 = c.客戶代號 and s.交易年 = 90 order by 交易額 desc ; ``` <span>使用inner join</span> ```sql= select s.業務姓名 , c.寶號 , p.產品名稱 , s.數量 , s.數量 * p.單價 as 交易額 from sales s join product p on s.產品代號 = p.產品代號 and s.交易年 = 90 join customer c on s.客戶代號 = c.客戶代號 order by 交易額 desc ; ```