文档章节

SQLServer2012表表达式练习

XuePeng77
 XuePeng77
发布于 2016/11/17 23:27
字数 720
阅读 32
收藏 0

表结构与数据:https://github.com/XuePeng87/TSQLV4

练习1-1

练习内容:返回每个雇员在orderdate列中的最大值
涉及的表:Sales.Orders
输出的列:empid, maxorderdate
正确结果:9行
SELECT empid, MAX(orderdate) AS maxorderdate 
FROM Sales.Orders GROUP BY empid;

 练习1-2

练习内容:编写一个派生表和Orders表之间的连接查询,返回每个雇员最大订单日期的订单
涉及的表:Sales.Orders
输出的列:empid, maxorderdate
正确结果:10行
SELECT O1.empid, O2.maxorderdate, O1.orderid, O1.custid FROM Sales.Orders O1
JOIN 
(SELECT empid, MAX(orderdate) AS maxorderdate FROM Sales.Orders GROUP BY empid) AS O2 
ON O1.empid = O2.empid AND O1.orderdate = O2.maxorderdate;

练习2-1

练习内容:编写一个查询,计算按orderdate、orderid排序的每个订单的行号
涉及的表:Sales.Orders
输出的列:orderid, orderdate, custid, empid, rownum
正确结果:830行
SELECT orderid, orderdate, custid, empid, 
ROW_NUMBER() OVER(ORDER BY orderdate, orderid) AS rownum 
FROM Sales.Orders ORDER BY orderdate, orderid;

练习2-2

练习内容:使用CTE,返回行号11至20的行
涉及的表:Sales.Orders
输出的列:orderid, orderdate, custid, empid, rownum
正确结果:10行
WITH O AS 
(
	SELECT orderid, orderdate, custid, empid, 
	ROW_NUMBER() OVER(ORDER BY orderdate, orderid) AS rownum 
	FROM Sales.Orders
)
SELECT * FROM O WHERE rownum BETWEEN 11 AND 20
ORDER BY orderdate, orderid;

练习3

练习内容:使用CTE,递归返回领导Zoya Dolgopyatova(ID=9)的管理链
涉及的表:HR.Employees
输出的列:empid, mgrid, firstname, lastname
正确结果:4行
WITH EmpsCTE AS 
(
	SELECT empid, mgrid, firstname, lastname 
	FROM HR.Employees WHERE empid = 9 

	UNION ALL

	SELECT P.empid, P.mgrid, P.firstname, P.lastname 
	FROM EmpsCTE AS C  
	JOIN HR.Employees AS P 
	ON C.mgrid = P.empid
) 
SELECT empid, mgrid, firstname, lastname FROM EmpsCTE;

练习4-1

练习内容:创建一个视图,返回每位雇员每年的总销售量
涉及的表:Sales.Orders, Sales.OrderDetails
输出的列:empid, orderyear, qty
正确结果:27行
IF OBJECT_ID('Sales.VEmpOrders') IS NOT NULL
	DROP VIEW Sales.VEmpOrders
GO
CREATE VIEW Sales.VEmpOrders
AS
SELECT empid, YEAR(orderdate) AS orderyear, SUM(qty) AS qty FROM 
Sales.Orders O JOIN Sales.OrderDetails D ON O.orderid = D.orderid
GROUP BY empid, YEAR(orderdate);
GO

练习4-2

练习内容:编写一个查询,返回每个雇员截至到当前年(包含当前年)的总销量
涉及的表:Sales.VEmpOrders
输出的列:empid, orderyear, qty, runqty
正确结果:27行
SELECT empid, orderyear, qty, 
(SELECT SUM(qty) FROM Sales.VEmpOrders V2 
WHERE V2.empid = V1.empid AND V2.orderyear <= V1.orderyear) AS runqty 
FROM Sales.VEmpOrders V1

练习5-1

练习内容:创建一个内嵌函数,接受供应商ID和一个数量。返回这个供应商指定数量的最高的单价产品
涉及的表:Production.Products
输出的列:productid, productname, unitprice
正确结果:2行
IF OBJECT_ID('Production.TopProducts') IS NOT NULL 
	DROP FUNCTION Production.TopProducts;
GO
CREATE FUNCTION Production.TopProducts 
(@supid AS INT, @n AS INT) 
RETURNS TABLE 
AS
RETURN 
SELECT TOP(@n) productid, productname, unitprice 
FROM Production.Products 
WHERE supplierid = @supid 
ORDER BY unitprice DESC;
SELECT * FROM Production.TopProducts(5, 2);

练习5-2

练习内容:使用CROSS APPLY运算符,为每个供应商返回两个最昂贵的产品
涉及的表:Production.TopProducts, Production.Suppliers
输出的列:supplierid, companyname, productid, productname, unitprice
正确结果:55行
SELECT S.supplierid, S.companyname, P.productid, P.productname, P.unitprice
From Production.Suppliers AS S 
CROSS APPLY 
Production.TopProducts(S.supplierid, 2) AS P;

 

© 著作权归作者所有

共有 人打赏支持
XuePeng77
粉丝 42
博文 135
码字总数 178151
作品 0
丰台
私信 提问
SQLServer2012单表查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个对Sales.Orders表的查询,返回2015年6月的订单 涉及的表:Sales.Orders 输出的列:orderid, orderdate, custi...

巧乐兹
2016/10/28
24
0
SQLServer2012单表查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个对Sales.Orders表的查询,返回2015年6月的订单 涉及的表:Sales.Orders 输出的列:orderid, orderdate, custi...

杰克鹏仔
2016/11/10
0
0
SQLServer2012联接查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,为每个雇员生成5个副本 涉及的表:HR.Employees, dbo.Nums 输出的列:empid, firstname, lastname, n 正...

杰克鹏仔
2016/11/10
5
0
SQLServer2012联接查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,为每个雇员生成5个副本 涉及的表:HR.Employees, dbo.Nums 输出的列:empid, firstname, lastname, n 正...

巧乐兹
2016/10/28
5
0
SQLServer2012子查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,返回Orders表中可以查到的活动最后一天的所有订单 涉及的表:Sales.Orders 输出的列:orderid, orderdat...

杰克鹏仔
2016/11/10
7
0

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
7
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
3
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
2
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
1
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部