数据库SQL查询语句实验报告Word文档下载推荐.docx
《数据库SQL查询语句实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库SQL查询语句实验报告Word文档下载推荐.docx(32页珍藏版)》请在冰点文库上搜索。
F'
女'
endas性别
whereaddresslike'
%上海%'
oraddresslike'
%南昌%'
andsex='
(5)在表sales中挑出销售金额大于等于10000元的订单。
SELECTorderNo,sum(quantity*price)astotal
FROMOrderDetail
GROUPBYorderNo
HAVINGsum(quantity*price)>
10000
(6)选取订单金额最高的前10%的订单数据。
selectTOP10PERCENTorderNo,sum(quantity*price)astotal
fromOrderDetail
groupbyorderNo
ORDERBYtotaldesc
(7)查询出职务为“职员”或职务为“科长”的女员工的信息。
select*
whereheadShipin('
科长'
'
职员'
)andsex='
(8)查找定单金额高于8000的所有客户编号。
selectCustomerNo
fromOrderDetailasa,OrderMasterasb
wherea.orderNo=b.orderNo
groupbyCustomerNo
havingsum(quantity*price)>
8000
(9)选取编号界于“C20050001”和“C20050004”的客户编号、客户名称、客户地址。
SELECTCustomerNo,CustomerName,address
FROMCustomer
WHERECustomerNoBETWEEN'
C20050001'
AND'
C20050004'
(11)找出同一天进入公司服务的员工。
selecthireDate,employeeName
fromEmployeeasa
whereexists
(select*fromEmployeeasb
wherea.hireDate=b.hireDateanda.employeeNo!
=b.employeeNo)
groupbyhireDate,employeeName
(12)在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
SELECTa.orderNo,CustomerNO,salerNo,orderDate,invoiceNo,sum(quantity*price)orderSum
FROMOrderDetaila,OrderMasterb
WHEREa.orderNo=b.orderNo
GROUPBYa.orderNo,CustomerNO,salerNo,orderDate,invoiceNo
HAVINGsum(quantity*price)>
ALL
(SELECTsum(quantity*price)
FROMOrderDetaila,OrderMasterb
WHEREa.orderNo=b.orderNoandsalerNo='
E2005002'
andorderDate='
2008-01-0900:
00:
00.000'
GROUPBYa.orderNo)
(13)查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。
selectb.CustomerNo,a.orderNo,sum(quantity*price)astotal
fromOrderDetailasa,OrderMasterasb,Productasc,
(selectd.orderNofromOrderDetailasd,ProductasewhereProductName='
17寸显示器'
andd.ProductNo=e.ProductNo)asf
wherec.ProductName='
52倍速光驱'
anda.orderNo=b.orderNoanda.orderNo=f.orderNo
groupbyb.CustomerNo,a.orderNo
(14)查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。
selecta.employeeName,a.sex,a.department,a.headShip
fromEmployeeasa,(select*fromEmployeewhereemployeeName='
陈诗杰'
)asb
wherea.department=b.department
(15)查询每种商品的商品编号、商品名称、订货数量和订货单价。
selectb.ProductName,a.ProductNo,a.total,a.price
from(
selectsum(quantity)astotal,ProductNo,price
fromOrderDetail
groupbyProductNo,price)asa,Productasb
wherea.ProductNo=b.ProductNo
(16)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
groupbyProductNo,price
havingprice>
400)asa,Productasb
(17)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。
selecta.ProductNo,ProductName,quantity,price
fromProductaLEFTOUTERJOINOrderDetailbONa.ProductNo=b.ProductNo
groupbya.ProductNo,quantity,price,ProductName
havingprice>
400
fromProductaRIGHTOUTERJOINOrderDetailbONa.ProductNo=b.ProductNo
fromProductaFULLOUTERJOINOrderDetailbONa.ProductNo=b.ProductNo
(18)查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用“yyyy-mm-dd”格式显示。
SELECTemployeeNo,employeeName,
casesexwhen'
when'
endas性别,ProductName,quantity,price,quantity*priceorderSum,ISNULL(convert(char(10),orderDate,120),'
'
)日期
FROMEmployeea,OrderMasterb,OrderDetailc,Productd
WHEREemployeeNo=salerNoandb.orderNo=c.orderNoandc.ProductNo=d.ProductNo
(19)查找在2008年3月中有销售记录的客户编号、名称和订单总额。
SELECTa.CustomerNo,a.CustomerName,orderDate,sum(quantity*price)as金额
FROMCustomera,OrderMasterb,OrderDetailc
WHEREa.CustomerNo=b.CustomerNoandb.orderNo=c.orderNo
andyear(orderDate)=2008andmonth(orderDate)=3
GROUPBYa.CustomerNo,a.CustomerName,orderDate
(20)使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日期不要显示时间,日期格式为“yyyy-mm-dd”,按客户编号排序,同一客户再按订单金额降序排序输出。
SELECTa.CustomerNo,a.CustomerName,ISNULL(convert(char(10),orderDate,120),'
)Date
FROMCustomeraLEFTJOINOrderMasterbONa.CustomerNo=b.CustomerNo
ORDERBYa.CustomerNo,orderSum
(21)查找16MDRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
selectemployeeName,
endas性别,orderDate,quantity,sum(quantity*price)as金额
fromEmployeea,OrderMasterb,OrderDetailc
whereemployeeNo=salerNoandb.orderNo=c.orderNoandProductNoin
(selectProductNofromProductwhereProductName='
16MDRAM'
)
groupbyemployeeName,sex,orderDate,quantity
(22)查找每个人的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期。
selectemployeeNo,employeeName,sex,ProductName,quantity,price,sum(quantity*price)
asordersum,orderDate
fromEmployeea,OrderMasterb,OrderDetailc,Productd
whereemployeeNo=salerNoandb.orderNo=c.orderNoandc.ProductNo=d.ProductNo
groupbyemployeeNo,employeeName,sex,ProductName,quantity,price,orderDate
(23)查询客户姓名为“客户丙”所购货物的“客户名称”、“定单金额”、“定货日期”和“电话号码”。
SELECTa.CustomerName,quantity*price订单金额,orderDate,telephone
WHERECustomerName='
客户丙'
anda.CustomerNo=b.CustomerNo
andb.orderNo=c.orderNo
(24)找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
selectb.orderNo,sum(quantity*price)ordersum
wheresex='
anda.employeeNo=b.salerNoandb.orderNo=c.orderNo
groupbyb.orderNo
2000
(25)查询来自上海市的客户的姓名、电话、订单号及订单金额。
selectCustomerName,telephone,b.orderNo,sum(quantity*price)asordersum
fromCustomera,OrderMasterb,OrderDetailc
whereaddress='
上海市'
anda.CustomerNo=b.CustomerNoandb.orderNo=c.orderNo
groupbyCustomerName,telephone,b.orderNo
实验二题目
首先使用命令:
UPDATEOrderMasterSETorderSum=total
FROMOrderMastera,
(SELECTorderNo,sum(quantity*price)astotal
FROMOrderDetail
GROUPBYorderNo)b
更新表OrderMaster中orderSum的值。
(1)查找有销售记录的客户编号、名称和订单总额。
SELECTa.CustomerNo,CustomerName,sum(orderSum)Sum
FROMCustomera,OrderMasterb
WHEREa.CustomerNo=b.CustomerNoandorderSum!
=0
GROUPBYa.CustomerNo,CustomerName
(2)在订单明细表中查询订单金额最高的订单。
SELECT*
FROMOrderMaster
WHEREorderSum=(SELECTmax(orderSum)FROMOrderMaster)
(3)查询没有订购商品的客户编号和客户名称。
SELECTa.CustomerNo,CustomerName,
FROMCustomera
WHERENOTEXISTS(
SELECT*
FROMOrderMasterb,OrderDetailc
WHEREa.CustomerNo=b.CustomerNoandb.orderNo=c.orderNo)
(4)找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
SELECTproductNo,orderNo,quantity,quantity*price订货金额
WHEREproductNOIN(
SELECTproductNo
GROUPBYproductNo
HAVINGcount(*)>
=3)
ORDERBYproductNodesc
(5)使用子查询查找16MDRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
SELECTemployeeName,
CASEsexWHEN'
THEN'
WHEN'
ENDAS性别,orderDate,quantity,sum(quantity*price)as金额
FROMEmployeea,OrderMasterb,OrderDetailc
WHEREemployeeNo=salerNoandb.orderNo=c.orderNoandProductNoin
(SELECTProductNoFROMProductWHEREProductName='
(6)查询sales表中订单金额最高的订单号及订单金额。
SELECTorderNo,orderSum
(7)计算出一共销售了几种商品。
SELECTcount(distinctproductNo)商品种类
(8)显示OrderDetail表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出。
SELECTproductNo,sum(quantity*price)订购金额
GROUPBYproductNo
ORDERBY订购金额DESC
(9)查找销售总额少于1000元的销售员编号、姓名和销售额。
SELECTemployeeNo,employeeName,sum(orderSum)销售额
FROMOrderMasteraRIGHTOUTERJOINEmployeebONsalerNo=employeeNo
WHEREemployeeNoNOTIN(
SELECTsalerNo
FROMOrderMaster
WHEREsalerNoNOTIN(
SELECTsalerNo
FROMOrderMaster
GROUPBYsalerNo
HAVINGsum(orderSum)<
1000))
GROUPBYemployeeNo,employeeName
(10)找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。
WHEREsalerNoIN(
5000)
ORDERBY销售额DESC
(11)在Employee表中查询薪水超过员工平均薪水的员工信息。
SELECTemployeeNo,employeeName,salary
FROMEmployee
WHEREsalary>
(
SELECTavg(salary)
FROMEmployee)
GROUPBYemployeeNo,employeeName,salary
(12)计算每一种商品的销售数量、平均销售单价和总销售金额。
SELECTproductNo,count(quantity)销售数量,avg(price)平均销售单价,sum(quantity*price)总销售额
ORDERBYproductNo
(13)查找至少有3次销售的业务员名单和销售日期。
SELECTemployeeName,orderDate
FROMEmployeea,OrderMasterb,(
GROUPBYsalerNo