在一個團隊中,有業務人員。如業務人員深入理解數據處理的內容,會大幅度增強相互配合的效率。
針對業務人員進行針對性培訓,還是比較容易掌握SQL的數據處理。類似與大學里面開的一門選修課。數據集選擇帆軟的Demo數據集。
業務人員學會SQL的操作之后,可以執行報表制作,SPL數據分析,可視化分析等內容。可充分發揮業務人員的價值
然后下面是題目及答案
-- 1 請查詢產品庫存量>20的所有產品,輸出產品ID,產品名稱和庫存量
select 產品ID,產品名稱,庫存量 from `產品` where 庫存量>20
-- 2 請查詢天津和重慶兩個城市的供應商,輸出供應商ID,公司名稱,聯系人姓名和電話
select 供應商ID,公司名稱,聯系人姓名,電話 from `供應商` where 城市 in ('天津','重慶')
-- 3 請查詢產品名稱中不是以奶酪結尾的產品
select * from 產品 where ?產品名稱 not like '%奶酪'
-- 4 請查詢訂購日期在1996-07-04和1996-07-20之間的所有訂單,輸出訂單ID,訂購日期,貨主名稱和貨主地址
select 訂單ID,訂購日期,貨主名稱,貨主地址 from `訂單` where 訂購日期 between '1996-07-04' and '1996-07-20'
-- 5 ?請查詢產品名稱中包含"醬"的所有產品,輸出產品名稱,單價,單位數量
select 產品名稱,單價,單位數量 ??from `產品` where 產品名稱 like '%醬%'
-- 6 請查詢貨主地區不等于華北,而且運貨費大于50的訂單,輸出訂單ID,到貨日期,貨主名稱和貨主地址
select 訂單ID,到貨日期,貨主名稱,貨主地址 from `訂單` where 貨主地區<>'華北' and 運貨費>50
-- 7 請查詢訂單表中發貨日期為空的所有貨主城市,并去除重復項
select DISTINCT 貨主城市 from `訂單` where 發貨日期 is null
-- 8 請查詢年齡>50的雇員,提示MYSQL中函數now()返回當前時間和DATEDIFF(date1,date2)可以計算兩個日期之間的相差天數)
select * from 雇員 where DATEDIFF(now(),出生日期)/365>50
-- 9 請統計出不同貨主城市的訂單數量,輸出貨主城市,訂單數量,并按照訂單數量降序排序
select 貨主城市,count(*) as 訂單數量 from 訂單 group by 貨主城市 order by 訂單數量 ?desc
-- 10 請查詢所有類別名稱等于飲料的所有產品,輸出類別名稱, 產品名稱,單價,庫存量
select b.類別名稱, a.產品名稱,a.單價,a.庫存量 from `產品` a inner join `類別` b on a.類別ID=b.類別ID and b.類別名稱='飲料'
-- 11 請按照產品類別進行分組,統計出飲料和點心的產品數量和庫存數量,輸出產品類別名稱,產品數量,庫存數量
select b.類別名稱, count(a.產品ID),sum(a.庫存量)
?from `產品` a inner join `類別` b on a.類別ID=b.類別ID and b.類別名稱 in ('飲料','點心')
group by ?b.類別名稱
-- 12 請查詢訂單ID=10248的訂單,并關聯其客戶信息和雇員信息,輸出訂單ID,雇員ID,客戶ID,雇員名字,客戶公司名稱
select a.訂單ID,a.雇員ID,a.客戶ID,c.名字,b.公司名稱 ?from `訂單` a
left join `客戶` ?b on a.客戶ID=b.客戶ID
left join `雇員` c ?on a.雇員ID=c.雇員ID
where a.訂單ID=10248
-- 13 請查詢產品類別是1和2的產品,并關聯其所有訂單,輸出產品ID,產品名稱,單價,訂單ID,訂購日期,貨主名稱,貨主地址
select a.產品ID,a.產品名稱,a.單價,b.訂單ID,c.訂購日期,c.貨主名稱,c.貨主地址
from `產品` a ?left join 訂單明細 b on a.產品ID = b.產品ID
left join 訂單 c on b.訂單ID=c.訂單ID
where a.類別ID in (1,2)
-- 14 請查詢客戶公司名稱是三川實業有限公司的訂單總金額(單價*數量*(1-折扣))
select sum(c.單價*c.數量*(1-c.折扣))
from 客戶 a
left join 訂單 b on a.客戶ID = b.客戶ID
left join 訂單明細 c on b.訂單ID = c.訂單ID
where a.公司名稱='三川實業有限公司'
-- 15 請統計蛋糕這個產品,1998年的銷量
select sum(數量)
from 產品 a
left join 訂單明細 b on a.產品ID=b.產品ID
left join 訂單 c on c.訂單ID=b.訂單ID
where a.`產品名稱`='蛋糕' and
c.訂購日期 >= '1998-01-01' and c.訂購日期<= '1998-12-31'
-- 16 請統計每個雇員的累計銷售業績,銷售數量和銷售金額,并按照銷售金額降序排序
select concat(a.姓氏,a.名字) as name,sum(c.數量) AS 銷售數量,sum(c.單價*c.數量) as 銷售金額
from 雇員 a
left join 訂單 b ?on a.雇員ID=b.雇員ID
left join 訂單明細 ?c ?on b.訂單ID=c.訂單ID
group by name order by 銷售金額 desc
-- 17 請統計1998年銷售量為0的產品,輸出產品名稱,單價,庫存量
select 產品名稱,單價,庫存量 from `產品` a
where not exists (
select 1 from 訂單 b, `訂單明細` c
where b.`訂單ID`=c.訂單ID and b.訂購日期 >= '1998-01-01' and b.訂購日期<= '1998-12-31' and c.產品ID=a.產品ID
)
-- 18 請從訂單信息中,統計出1996年的訂單中,給每個運貨商支付的運貨費用。輸出運貨商公司名稱和累計運貨費用
select b.`公司名稱`,sum(a.`運貨費`)
?from `訂單` a left join `運貨商` ?b on a.`運貨商`=b.`運貨商ID`
where a.`訂購日期` >='1996-01-01' and a.`訂購日期` <='1996-12-31'
group by b.`公司名稱`
-- 19 請查詢出當前產品中前5個庫存量最大的產品,輸出產品名稱,庫存量(使用MYSQL limit 可以限定取出數據的行數)
?select `產品名稱`,`庫存量` from `產品` ?order by `庫存量` desc limit 0,5
?--20 請從訂單表中統計出1996年,每個月的銷售量和銷售額,輸出月份,銷售量和銷售額 (提示:銷售額是訂單明細中單價*數量*(1-折扣),mysql中date_format函數可以獲取月份信息,如DATE_FORMAT(訂購日期,'%Y-%m'))
select DATE_FORMAT(訂購日期,'%Y-%m'),sum(b.`數量`),sum(b.`單價`*(1-b.`折扣`)*b.`數量`) from 訂單 a left join 訂單明細 b on a.`訂單ID`=b.`訂單ID`
where a.`訂購日期` >='1996-01-01' and a.`訂購日期` <='1996-12-31'
group by DATE_FORMAT(訂購日期,'%Y-%m')