文档章节

SQLServer2012子查询练习

巧乐兹
 巧乐兹
发布于 2016/11/05 17:09
字数 614
阅读 73
收藏 0

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

练习1

练习内容:编写一个查询,返回Orders表中可以查到的活动最后一天的所有订单
涉及的表:Sales.Orders
输出的列:orderid, orderdate, custid, empid
正确结果:4行
SELECT orderid, orderdate, custid, empid 
FROM Sales.Orders 
WHERE orderdate = (
	SELECT MAX(orderdate) FROM Sales.Orders
);

练习2

练习内容:编写一个查询,返回订单数量最多的客户的所有订单。注意,在一个以上的客户可能具有相同数量的订单
涉及的表:Sales.Orders
输出的列:custid, orderid, orderdate, empid
正确结果:31行
SELECT custid, orderid, orderdate, empid 
FROM Sales.Orders 
WHERE custid = 
(
	SELECT TOP 1 WITH TIES custid FROM Sales.Orders GROUP BY custid ORDER BY COUNT(*) DESC
);

练习3

练习内容:编写一个查询,返回在2016年5月1日或之后没有下订单的雇员
涉及的表:HR.Employees, Sales.Orders
输出的列:empid, firstname, lastname
正确结果:4行
SELECT empid, firstname, lastname 
FROM HR.Employees E 
WHERE E.empid NOT IN (
	SELECT O.empid FROM Sales.Orders AS O 
	WHERE O.orderdate >= '20160501'
);

练习4

练习内容:编写一个查询,返回有客户但是没有雇员的国家
涉及的表:Sales.Customers, HR.Employees
输出的列:country
正确结果:19行
SELECT DISTINCT country FROM Sales.Customers
WHERE country NOT IN (
	SELECT country FROM HR.Employees
);

练习5

练习内容:编写一个查询,返回每个客户活动最后一天的所有订单
涉及的表:Sales.Orders
输出的列:custid, orderid, orderdate, empid
正确结果:90行
SELECT O1.custid, O1.orderid, O1.orderdate, O1.empid 
FROM Sales.Orders AS O1 WHERE O1.orderdate = (
	SELECT MAX(O2.orderdate) FROM Sales.Orders AS O2 
	WHERE O2.custid = O1.custid
);

练习6

练习内容:编写一个查询,返回2015年下过订单,但是2016年没有下订单的客户
涉及的表:Sales.Customers, Sales.Orders
输出的列:custid, companyname
正确结果:7行
SELECT custid, companyname FROM Sales.Customers AS C 
WHERE EXISTS (
	SELECT * FROM Sales.Orders AS O1 
	WHERE orderdate BETWEEN '20150101' AND '20151231' AND O1.custid = C.custid 
) AND NOT EXISTS (
	SELECT * FROM Sales.Orders AS O2 
	WHERE orderdate BETWEEN '20160101' AND '20161231' AND O2.custid = C.custid 
);

练习7

练习内容:编写一个查询,返回订购了产品12的客户
涉及的表:Sales.Customers, Sales.Orders, Sale.OrderDetails
输出的列:custid, companyname
正确结果:12行
SELECT custid, companyname 
FROM Sales.Customers WHERE custid IN (
	SELECT custid FROM Sales.Orders WHERE orderid IN (
		SELECT orderid 
		FROM Sales.OrderDetails 
		WHERE productid = 12
	)
);

练习8

练习内容:编写一个查询,计算每个客户及其月度的采购总量
涉及的表:Sales.CustOrders
输出的列:custid, ordermonth, qty
正确结果:636行
SELECT custid, ordermonth, qty, (
	SELECT SUM(qty) FROM Sales.CustOrders AS O2 
	WHERE O2.custid = O1.custid
	AND O2.ordermonth <= O1.ordermonth
)  AS runqty 
FROM Sales.CustOrders AS O1;

 

© 著作权归作者所有

巧乐兹
粉丝 2
博文 17
码字总数 19978
作品 0
北京
私信 提问
SQLServer2012子查询练习

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

杰克鹏仔
2016/11/10
7
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-1 练习内容:返回每个雇员在orderdate列中的最大值 涉及的表:Sales.Orders 输出的列:empid, maxorderdate 正确结果:9行 练习1...

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

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

杰克鹏仔
2016/11/10
5
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
15
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
10
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
14
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部