sql學(xué)習(xí) 1 2 3 4 5 6 7 8 9 10 11 12 . . . . . . . . . . . .a b c dd e f   
  -1、查找員工的編號(hào)、姓名、部門和出生日期,如果出生日期為空值,
--顯示日期不詳,并按部門排序輸出,日期格式為yyyy-mm-dd。
select emp_no ,emp_name ,dept ,
isnull(convert(char(10),birthday,120),'日期不詳') birthday
from employee
order by dept
--2、查找與喻自強(qiáng)在同一個(gè)單位的員工姓名、性別、部門和職稱
 select emp_no,emp_name,dept,title
 from employee
 where emp_name<>'喻自強(qiáng)' and dept in
 (select dept from employee
 where emp_name='喻自強(qiáng)')
--3、按部門進(jìn)行匯總,統(tǒng)計(jì)每個(gè)部門的總工資
 select dept,sum(salary)
 from employee
 group by dept
--4、查找商品名稱為14寸顯示器商品的銷售情況,
 --顯示該商品的編號(hào)、銷售數(shù)量、單價(jià)和金額
 select a.prod_id,qty,unit_price,unit_price*qty totprice
 from sale_item a,product b
 where a.prod_id=b.prod_id and prod_name='14寸顯示器'
--5、在銷售明細(xì)表中按產(chǎn)品編號(hào)進(jìn)行匯總,統(tǒng)計(jì)每種產(chǎn)品的銷售數(shù)量和金額
 select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice
 from sale_item
 group by prod_id
--6、使用convert函數(shù)按客戶編號(hào)統(tǒng)計(jì)每個(gè)客戶1996年的訂單總金額
 select cust_id,sum(tot_amt) totprice
 from sales
 where convert(char(4),order_date,120)='1996'
 group by cust_id
--7、查找有銷售記錄的客戶編號(hào)、名稱和訂單總額
 select a.cust_id,cust_name,sum(tot_amt) totprice
 from customer a,sales b
 where a.cust_id=b.cust_id
 group by a.cust_id,cust_name
--8、查找在1997年中有銷售記錄的客戶編號(hào)、名稱和訂單總額
 select a.cust_id,cust_name,sum(tot_amt) totprice
 from customer a,sales b
 where a.cust_id=b.cust_id and convert(char(4),order_date,120)='1997'
 group by a.cust_id,cust_name
--9、查找一次銷售最大的銷售記錄
 select order_no,cust_id,sale_id,tot_amt
 from sales
 where tot_amt=
 (select max(tot_amt)
 from sales)
--10、查找至少有3次銷售的業(yè)務(wù)員名單和銷售日期
 select emp_name,order_date
 from employee a,sales b 
 where emp_no=sale_id and a.emp_no in
 (select sale_id
 from sales
 group by sale_id
 having count(*)>=3)
 order by emp_name
--11、用存在量詞查找沒有訂貨記錄的客戶名稱
 select cust_name
 from customer a
 where not exists
 (select *
 from sales b
 where a.cust_id=b.cust_id)
--12、使用左外連接查找每個(gè)客戶的客戶編號(hào)、名稱、訂貨日期、訂單金額
 --訂貨日期不要顯示時(shí)間,日期格式為yyyy-mm-dd
 --按客戶編號(hào)排序,同一客戶再按訂單降序排序輸出
 select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt
 from customer a left outer join sales b on a.cust_id=b.cust_id
 order by a.cust_id,tot_amt desc
--13、查找16m dram的銷售情況,要求顯示相應(yīng)的銷售員的姓名、
 --性別,銷售日期、銷售數(shù)量和金額,其中性別用男、女表示
 select emp_name 姓名, 性別= case a.sex when 'm' then '男'
 when 'f' then '女' 
 else '未'
 end,
 銷售日期= isnull(convert(char(10),c.order_date,120),'日期不詳'),
 qty 數(shù)量, qty*unit_price as 金額
 from employee a, sales b, sale_item c,product d
 where d.prod_name='16m dram' and d.prod_id=c.prod_id and
 a.emp_no=b.sale_id and b.order_no=c.order_no
--14、查找每個(gè)人的銷售記錄,要求顯示銷售員的編號(hào)、姓名、性別、
 --產(chǎn)品名稱、數(shù)量、單價(jià)、金額和銷售日期
 select emp_no 編號(hào),emp_name 姓名, 性別= case a.sex when 'm' then '男'
 when 'f' then '女' 
 else '未'
 end,
 prod_name 產(chǎn)品名稱,銷售日期= isnull(convert(char(10),c.order_date,120),'日期不詳'),
 qty 數(shù)量, qty*unit_price as 金額
 from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,product d
 where d.prod_id=c.prod_id and b.order_no=c.order_no
--15、查找銷售金額最大的客戶名稱和總貨款
 select cust_name,d.cust_sum
 from customer a,
 (select cust_id,cust_sum
 from (select cust_id, sum(tot_amt) as cust_sum
 from sales
 group by cust_id ) b
 where b.cust_sum = 
 ( select max(cust_sum)
 from (select cust_id, sum(tot_amt) as cust_sum
 from sales
 group by cust_id ) c )
 ) d
 where a.cust_id=d.cust_id 
--16、查找銷售總額少于1000元的銷售員編號(hào)、姓名和銷售額
 select emp_no,emp_name,d.sale_sum
 from employee a,
 (select sale_id,sale_sum
 from (select sale_id, sum(tot_amt) as sale_sum
 from sales
 group by sale_id ) b
 where b.sale_sum <1000 
 ) d
 where a.emp_no=d.sale_id 
--17、查找至少銷售了3種商品的客戶編號(hào)、客戶名稱、商品編號(hào)、商品名稱、數(shù)量和金額
 select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price
 from customer a, product b, sales c, sale_item d
 where a.cust_id=c.cust_id and d.prod_id=b.prod_id and 
 c.order_no=d.order_no and a.cust_id in (
 select cust_id
 from (select cust_id,count(distinct prod_id) prodid
 from (select cust_id,prod_id
 from sales e,sale_item f
 where e.order_no=f.order_no) g
 group by cust_id
 having count(distinct prod_id)>=3) h )
--18、查找至少與世界技術(shù)開發(fā)公司銷售相同的客戶編號(hào)、名稱和商品編號(hào)、商品名稱、數(shù)量和金額
 select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price
 from customer a, product b, sales c, sale_item d
 where a.cust_id=c.cust_id and d.prod_id=b.prod_id and 
 c.order_no=d.order_no and not exists
 (select f.*
 from customer x ,sales e, sale_item f
 where cust_name='世界技術(shù)開發(fā)公司' and x.cust_id=e.cust_id and
 e.order_no=f.order_no and not exists
 ( select g.*
 from sale_item g, sales h
 where g.prod_id = f.prod_id and g.order_no=h.order_no and
 h.cust_id=a.cust_id)
 )
19、查找表中所有姓劉的職工的工號(hào),部門,薪水
 select emp_no,emp_name,dept,salary
 from employee
 where emp_name like '劉%'
20、查找所有定單金額高于2000的所有客戶編號(hào)
 select cust_id
 from sales
 where tot_amt>2000
21、統(tǒng)計(jì)表中員工的薪水在4000-6000之間的人數(shù)
 select count(*)as 人數(shù)
 from employee
 where salary between 4000 and 6000
22、查詢表中的同一部門的職工的平均工資,但只查詢"住址"是"上海市"的員工
 select avg(salary) avg_sal,dept 
 from employee 
 where addr like '上海市%'
 group by dept
23、將表中住址為"上海市"的員工住址改為"北京市"
 update employee 
 set addr like '北京市'
 where addr like '上海市'
24、查找業(yè)務(wù)部或會(huì)計(jì)部的女員工的基本信息。
 select emp_no,emp_name,dept
 from employee 
 where sex='f'and dept in ('業(yè)務(wù)','會(huì)計(jì)')
25、顯示每種產(chǎn)品的銷售金額總和,并依銷售金額由大到小輸出。
 select prod_id ,sum(qty*unit_price)
 from sale_item 
 group by prod_id
 order by sum(qty*unit_price) desc
26、選取編號(hào)界于'c0001'和'c0004'的客戶編號(hào)、客戶名稱、客戶地址。
 select cust_id,cust_name,addr
 from customer 
 where cust_id between 'c0001' and 'c0004'
27、計(jì)算出一共銷售了幾種產(chǎn)品。
 select count(distinct prod_id) as '共銷售產(chǎn)品數(shù)'
 from sale_item 
28、將業(yè)務(wù)部員工的薪水上調(diào)3%。
 update employee
 set salary=salary*1.03
 where dept='業(yè)務(wù)'
29、由employee表中查找出薪水最低的員工信息。
 select *
 from employee
 where salary=
 (select min(salary )
 from employee )
30、使用join查詢客戶姓名為"客戶丙"所購貨物的"客戶名稱","定單金額","定貨日期","電話號(hào)碼"
 select a.cust_id,b.tot_amt,b.order_date,a.tel_no
 from customer a join sales b
 on a.cust_id=b.cust_id and cust_name like '客戶丙'
31、由sales表中查找出訂單金額大于"e0013業(yè)務(wù)員在1996/10/15這天所接每一張訂單的金額"的所有訂單。
 select *
 from sales
 where tot_amt>all
 (select tot_amt 
 from sales 
 where sale_id='e0013'and order_date='1996/10/15')
 order by tot_amt
32、計(jì)算'p0001'產(chǎn)品的平均銷售單價(jià)
 select avg(unit_price)
 from sale_item
 where prod_id='p0001'
33、找出公司女員工所接的定單
 select sale_id,tot_amt
 from sales
 where sale_id in 
 (select sale_id from employee
 where sex='f')
34、找出同一天進(jìn)入公司服務(wù)的員工
 select a.emp_no,a.emp_name,a.date_hired
 from employee a
 join employee b
 on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired)
 order by a.date_hired
35、找出目前業(yè)績超過232000元的員工編號(hào)和姓名。
 select emp_no,emp_name
 from employee 
 where emp_no in
 (select sale_id
 from sales 
 group by sale_id
 having sum(tot_amt)<232000)
36、查詢出employee表中所有女職工的平均工資和住址在"上海市"的所有女職工的平均工資
 select avg(salary)
 from employee
 where sex like 'f'
 union
 select avg(salary)
 from employee
 where sex like 'f' and addr like '上海市%'
37、在employee表中查詢薪水超過員工平均薪水的員工信息。
 select * 
 from employee 
 where salary>( select avg(salary) 
 from employee)
38、 找出目前銷售業(yè)績超過10000元的業(yè)務(wù)員編號(hào)及銷售業(yè)績,并按銷售業(yè)績從大到小排序。
 select sale_id ,sum(tot_amt)
 from sales 
 group by sale_id 
 having sum(tot_amt)>10000
 order by sum(tot_amt) desc
39、 找出公司男業(yè)務(wù)員所接且訂單金額超過2000元的訂單號(hào)及訂單金額。 
 select order_no,tot_amt
 from sales ,employee
 where sale_id=emp_no and sex='m' and tot_amt>2000
40、 查詢sales表中訂單金額最高的訂單號(hào)及訂單金額。
 select order_no,tot_amt from sales 
 where tot_amt=(select max(tot_amt) from sales)
41、 查詢?cè)诿繌堄唵沃杏嗁徑痤~超過4000元的客戶名及其地址。
 select cust_name,addr from customer a,sales b 
 where a.cust_id=b.cust_id and tot_amt>4000
42、 求出每位客戶的總訂購金額,顯示出客戶號(hào)及總訂購金額,并按總訂購金額降序排列。
 select cust_id,sum(tot_amt) from sales
 group by cust_id 
 order by sum(tot_amt) desc
43、 求每位客戶訂購的每種產(chǎn)品的總數(shù)量及平均單價(jià),并按客戶號(hào),產(chǎn)品號(hào)從小到大排列。
 select cust_id,prod_id,sum(qty),sum(qty*unit_price)/sum(qty)
 from sales a, sale_item b
 where a.order_no=b.order_no
 group by cust_id,prod_id
 order by cust_id,prod_id
44、 查詢訂購了三種以上產(chǎn)品的訂單號(hào)。
 select order_no 
 from sale_item
 group by order_no
 having count(*)>3
45、 查詢訂購的產(chǎn)品至少包含了訂單3號(hào)中所訂購產(chǎn)品的訂單。
 select distinct order_no
 from sale_item a
 where order_no<>'3'and not exists ( 
 select * from sale_item b where order_no ='3' and not exists 
 (select * from sale_item c where c.order_no=a.order_no and c.prod_id=b.prod_id))
46、 在sales表中查找出訂單金額大于"e0013業(yè)務(wù)員在1996/11/10這天所接每一張訂單的金額"的所有訂單,并顯示承接這些訂單的業(yè)務(wù)員和該訂單的金額。
 select sale_id,tot_amt from sales
 where tot_amt>all(select tot_amt 
 from sales 
 where sale_id='e0013' and order_date='1996-11-10') 
47、 查詢末承接業(yè)務(wù)的員工的信息。
 select *
 from employee a
 where not exists 
 (select * from sales b where a.emp_no=b.sale_id)
48、 查詢來自上海市的客戶的姓名,電話、訂單號(hào)及訂單金額。
 select cust_name,tel_no,order_no,tot_amt
 from customer a ,sales b
 where a.cust_id=b.cust_id and addr='上海市'
49、 查詢每位業(yè)務(wù)員各個(gè)月的業(yè)績,并按業(yè)務(wù)員編號(hào)、月份降序排序。
 select sale_id,month(order_date), sum(tot_amt) 
 from sales 
 group by sale_id,month(order_date)
 order by sale_id,month(order_date) desc
50、 求每種產(chǎn)品的總銷售數(shù)量及總銷售金額,要求顯示出產(chǎn)品編號(hào)、產(chǎn)品名稱,總數(shù)量及總金額,并按產(chǎn)品號(hào)從小到大排列。 
 select a.prod_id,prod_name,sum(qty),sum(qty*unit_price)
 from sale_item a,product b
 where a.prod_id=b.prod_id 
 group by a.prod_id,prod_name
 order by a.prod_id
 51、 查詢總訂購金額超過'c0002'客戶的總訂購金額的客戶號(hào),客戶名及其住址。
 select cust_id, cust_name,addr
 from customer
 where cust_id in (select cust_id from sales 
 group by cust_id
 having sum(tot_amt)>
 (select sum(tot_amt) from sales where cust_id='c0002'))
52、 查詢業(yè)績最好的的業(yè)務(wù)員號(hào)、業(yè)務(wù)員名及其總銷售金額。
 select emp_no,emp_name,sum(tot_amt)
 from employee a,sales b
 where a.emp_no=b.sale_id
 group by emp_no,emp_name
 having sum(tot_amt)=
 (select max(totamt)
 from (select sale_id,sum(tot_amt) totamt
 from sales
 group by sale_id) c)
53、 查詢每位客戶所訂購的每種產(chǎn)品的詳細(xì)清單,要求顯示出客戶號(hào),客戶名,產(chǎn)品號(hào),產(chǎn)品名,數(shù)量及單價(jià)。
 select a.cust_id, cust_name,c.prod_id,prod_name,qty, unit_price
 from customer a,sales b, sale_item c ,product d
 where a.cust_id=b.cust_id and b.order_no=c.order_no and c.prod_id=d.prod_id
54、 求各部門的平均薪水,要求按平均薪水從小到大排序。
 select dept,avg(salary) 
 from employee
 group by dept 
 order by avg(salary)