GDOU-B-11-112广东海洋大学学生实验报告书
实验名称实验二:使用分组,排序,汇
总
课程名称数据库原理与设计成绩
学院(系)软件学院专业计算机软件工程班级1093 学生姓名唐智羽学号200911701326 实验地点科技楼513 实验日期
一、实验目的:
1.掌握通配符的用法
2.掌握 GROUP BY 子句的使用
3.掌握 ORDER BY子句的使用
4.掌握 TOP和DISTINCT关键字的使用
5.掌握 COMPUTE和COMPUTE BY子句的使用
6.掌握聚集函数的使用
二、实验内容
完成在在Recruitment,GlobalToyz和Student数据库基础上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句(SELECT语句)
1.显示以‘S’开头,并且玩具名称不少于7个字符的玩具名称vToyName。
SELECT*
FROM Toys
WHERE vToyName LIKE'S______%'
2.显示名称里包含字母‘u’或‘x’的玩具ID和名称以及价格。
SELECT cToyId, vToyName, mToyRate
FROM Toys
WHERE vToyName LIKE'%[u]%'OR vToyName LIKE'%[x]%'
3.查询信用卡号(cCreditCardNo)中包含4个8的订购者(Shopper)的详细
信息。
SELECT*
FROM Shopper
WHERE cCreditCardNo LIKE'%8%8%8%8%'
4.统计订单号为‘000001’的订单订购的玩具的数量和玩具的总花费
(mToyCost)。
SELECT SUM(siQty),SUM(mToycost)
FROM OrderDetail
WHERE cOrderNo='000001';
5.统计每份提单订购的玩具数量和玩具花费。
SELECT SUM(siQty),SUM(mToycost)
from orderDetail
GROUP BY cOrderNo
6.对于GlobalToyz数据库的Country表,统计国家名称只由六个字母构成的国
家的数目。
SELECT COUNT(*)
FROM Country
WHERE cCountry LIKE'______'
7.显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。
SELECT TOP 5 vToyName, mToyRate
FROM Toys
ORDER BY mToyRate DESC
8.输出Shopper表的‘Texas’州的前10%的订购者的详细信息。
9.统计被人订购过的玩具的数量,相同的玩具只统计一次。
(OrderDetail表)SELECT COUNT(DISTINCT cToyId) ToyNum
FROM OrderDetail
10.toys表中,按照玩具的类别(cCategoryId)统计每类玩具的数量和平均价
格(mToyrate),只输出平均价格大于20$的玩具的信息。
思考:能输出的列可以有哪些?请写出相应的查询。
SELECT COUNT(DISTINCT cToyId),AVG(mToyRate)
FROM Toys
GROUP BY cCategoryId HAVING avg(mToyRate)>20
11.对于PickofMonth表,打印出该表的详细信息,并在底部汇总出‘2000’年
销售数量的总和。
SELECT*
FROM PickofMonth
WHERE iYear='2000'
COMPUTE SUM(iTotalSold)
12.对于OrderDetail表,请输出订单号,cWrapperId,vMessage和mToyCost,
并根据cWrapperId小计玩具花销的平均值和总值,在底部总计玩具花销的平均值和总值。
SELECT cOrderNo, cWrapperId, vMessage, mToyCost
FROM OrderDetail
ORDER BY cWrapperId
COMPUTE AVG(mToyCost),SUM(mToyCost)BY cWrapperId
13.打印出玩具花费最高的三份订单的详情。
SELECT TOP 3 *
FROM OrderDetail
ORDER BY mToyCost DESC
14.以下这段代码将会输出什么:
SELECT cOrderNo,cToyId,SUM(mToyCost) FROM OrderDetail
GROUP BY cOrderNo
请写出正确的语句。
SELECT cOrderNo,cToyId,SUM(mToyCost)
FROM OrderDetail
GROUP BY cOrderNo, cToyId
15.下面包含COMPUTE BY子句的代码都会产生错误,请写出产生错误的原因,
并将其改为正确的带COMPUTE BY子句的SQL语句。
SELECT cToyId,mToyCost FROM OrderDetail COMPUTE SUM(mToyCost) BY cToyId SELECT cCartId FROM Orders ORDER BY cCartId COMPUTE AVG(mTotalCost) BY cCartId
SELECT cCartId
FROM Orders
ORDER BY cCartId COMPUTE AVG(mTotalCost)BY cCartId
错误原因: COMPUTE 子句#1、聚合表达式#1 不在选择列表中。