GDOU-B-11-112
广东海洋大学学生实验报告书实验名称 | 实验6:使用函数和compute子句 | 课程名称 | 数据库原理及应用 | 成绩 | |||||||||
学院(系) | 软件学院 | 专业 | 软件工程 | 班级 | |||||||||
学生姓名 | 学号 | 实验地点 | 实验日期 | ||||||||||
实验目的: 1. 掌握字符串函数的使用 2. 掌握日期函数的使用 3. 掌握数学函数的使用 4. 掌握数据类型转换函数的使用 实验内容 完成在GlobalToyz数据库基础上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句。 1. 显示玩具的适用年龄在4岁到8岁之间的所有玩具的名称和描述,要求只显示玩具描述的前25个字符。(两种函数实现) SELECT vToyName, SUBSTRING(vToyDescription, 0, 25) AS 'vToyDescription' FROM Toys WHERE siLowerAge >= 4 AND siUpperAge <= 8; datediff是字符型函数SELECT vToyName, LEFT(vToyDescription, 25) AS 'vToyDescription' FROM Toys WHERE siLowerAge >= 4 AND siUpperAge <= 8; 2. 对于Toys表的所有玩具,将名称和价格结合在一起按要求的格式输出,例如对ID为000001的玩具,打印输出的是‘The price of Robby the Whale is 8.99$’。请按该格式输出所有玩具的名称和价格。 SELECT ('The price of ' + vToyName + ' is ' + CONVERT(varchar, mToyRate) + '$') FROM Toys; 3.将Shopper表的订购者姓和名结合在一起显示,在姓和名显示的时候在中间加上一个空格。如‘Angela Smith’。 SELECT (vFirstName + ' ' + vLastName) AS 'Name' FROM Shopper; 4. 显示价格最高的五种玩具的名称和价格(vToyName,mToyRate)。 SELECT vToyName, mToyRate FROM Toys WHERE mToyRate IN ( SELECT DISTINCT TOP 5 mToyRate FROM Toys ORDER BY mToyRate DESC ) ORDER BY mToyRate DESC; 5. 现需要查看Shopper表的订购者所使用的服务商列表。对于每个订购者,只需要显示服务商地址,不需要显示用户名。例如‘angelas@qmail’,只需要显示‘@qmail’。对于查询结果中重复出现的服务商地址,只需要显示一次。 SELECT DISTINCT SUBSTRING(vEmailId, CHARINDEX('@', vEmailId), LEN(vEmailId) - CHARINDEX('@', vEmailId) + 1) FROM Shopper; 6. 对于每份订单,请输出下列信息,包括订单号,订单日期,星期几。 SELECT cOrderNo, dOrderDate, DATENAME(dw, dOrderDate) AS 'Weekday' FROM Orders; 7. 对于每份订单要求输出的是订单号,订单日期的月份和日子。例如,订单号为‘000001’的订单的输出结果为‘000001号订单的日期是5月20日’。 SELECT (cOrderNo + '号订单的日期是' + CONVERT(nvarchar, DATEPART(mm, dOrderDate)) + '月' + CONVERT(nvarchar, DATEPART(dd, dOrderDate)) + '日') FROM Orders; 8. 对于装运表Shipment,请根据每份订单输出实际投递时间(dActualDeliveryDate)和装运时间(dShipmentDate)之间相隔的天数。 SELECT cOrderNo, DATEDIFF(dd, dShipmentDate, dActualDeliveryDate) FROM Shipment; 9. 假设规则为订单的过期时间为下订单后的一个月,请输出每份订单的订单号,下订单的日期,以及理论的订单过期时间。 SELECT cOrderNo, dOrderDate, DATEADD(mm, 1, dOrderDate) FROM Orders; 10. 对于装运表Shipment,按该格式输出每份订单的装运日期。如订单号为‘000001’的输出结果为‘The Shipment date of Order No. 000001 is 2001.05.23’。 SELECT 'The Simpment date of Order No. ' + cOrderNo + ' is ' + DATENAME(yyyy, dShipmentDate) + '.' + DATENAME(mm, dShipmentDate) + '.' + DATENAME(dd, dShipmentDate) FROM Shipment; 11. 输出Shopper表的‘Texas’州的前10%的订购者的详细信息。 SELECT TOP 10 PERCENT * FROM Shopper WHERE cState = 'Texas' 12. 对于OrderDetail表,请输出订单号,cWrapperId,vMessage和mToyCost,并根据cWrapperId小计玩具花销的平均值和总值,在底部总计玩具花销的平均值和总值。(Compute和Compute by) SELECT cOrderNo, cWrapperId, vMessage, mToyCost FROM OrderDetail ORDER BY cWrapperId COMPUTE AVG(mToyCost), SUM(mToyCost) BY cWrapperId; 13.对于PickofMonth表,打印出该表的详细信息,并在底部汇总出‘2000’年销售数量的总和。 SELECT * FROM PickOfMonth WHERE iYear = 2000 ORDER BY iYear COMPUTE SUM(iTotalSold) BY iYear; 14. 打印出玩具花费最高的三份订单的详情。 SELECT * FROM OrderDetail WHERE cOrderNo IN ( SELECT cOrderNo FROM Orders WHERE mTotalCost - mGiftWrapCharges - mShippingCharges IN ( SELECT DISTINCT TOP 3 'ToyCost' = mTotalCost - mGiftWrapCharges – mShippingCharges FROM Orders ORDER BY 'ToyCost' DESC) ); 15. 查询输出Shopper表中姓和名的长度加起来最长的订购者的姓名。 SELECT (vFirstName + ' ' + vLastName) FROM Shopper WHERE (LEN(vFirstName) + LEN(vLastName)) >= ALL ( SELECT (LEN(vFirstName) + LEN(vLastName)) FROM Shopper ) | |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论