测试
测试项目#1:返回在2005年10月售出的所有产品的名称、价格和客户姓名,答案见列表B:
SELECT
c.FirstName, c.LastName, p.ProductName, s.SalePrice
FROM
Sales s
INNER JOIN Customers c ON s.CustomerID = c.CustomerID
INNER JOIN Products p ON s.ProductID = p.ProductID
WHERE
s.SaleDate >= '10/1/2005' AND
s.SaleDate < '11/1/2005'
|
测试项目#2:返回没有购买产品并且位于客户表格上的人的姓名及其客户ID,答案参见列表C:
SELECT
c.CustomerID, c.FirstName, c.LastName
FROM
Sales s
RIGHT OUTER JOIN Customers c ON s.CustomerID = c.CustomerID
WHERE
s.CustomerID IS NULL
|
测试项目#3:返回客户姓名、销售价格、建议售价、建议售价和实际价格的差额,该差额必需是正数,答案见列表D:
SELECT
c.FirstName, c.LastName, s.SalePrice, p.RecommendedPrice,
ABS(s.SalePrice - p.RecommendedPrice)
AS AbsoluteSalePriceDifference
FROM
Sales s
INNER JOIN Customers c ON s.CustomerID = c.CustomerID
INNER JOIN Products p ON s.ProductID = p.ProductID
|
测试项目#4:根据产品类别计算平均价格,答案见列表E:
SELECT
p.Category, AVG(s.SalePrice) AS AverageSalePrice
FROM
Sales s
INNER JOIN Products p ON s.ProductID = p.ProductID
GROUP BY p.Category
|
测试项目#5:将以下的客户和销售信息加入到数据库中:
FirstName: Chris
LastName: Kringle
City: Henryville
State: IN
Zip: 47126
ProductID: 3
SalePrice: 205
SaleDate: 12/31/2005
|
答案见列表F:
INSERT INTO Customers(FirstName, LastName, City, State, Zip)
VALUES('Chris', 'Kringle', 'Henryville', 'IN', '47126')
INSERT INTO Sales(CustomerID, ProductID, SalePrice, SaleDate)
VALUES(SCOPE_IDENTITY(), 3, 205, '12/31/2005')
|
测试项目#6:从数据库中删除来自缅因洲(‘ME’)的客户,答案见列表G:
DELETE s
FROM
Sales s
JOIN Customers c ON s.CustomerID = c.CustomerID
WHERE
c.State = 'ME'
DELETE c
FROM
Customers c
WHERE
c.State = 'ME'
|
测试项目#7:返回客户购买了两个或多个产品的平均售价和产品类别,答案见列表H:
SELECT
p.Category, AVG(s.SalePrice)
FROM
Sales s
INNER JOIN
(
SELECT s.CustomerID
FROM
Sales s
GROUP BY s.CustomerID
HAVING COUNT(CustomerID) >= 2
) x ON s.CustomerID = x.CustomerID
INNER JOIN Products p ON s.ProductID = p.ProductID
GROUP BY p.Category
|
测试项目#8:将销售在2005年6月10日到6月20日之间的产品的销售价格升级为建议售价,答案见列表I:
UPDATE s
SET SalePrice = p.RecommendedPrice
FROM
Sales s
INNER JOIN Products p ON s.ProductID = s.ProductID
WHERE
SaleDate >= '6/10/2005' AND
SaleDate < '6/21/2005'
|
测试项目#9:根据产品种类计算建议售价超过实际售价10元及以上的销售数量,答案见列表J:
SELECT
p.Category, COUNT(*) AS NumberOfSales
FROM
Sales s
INNER JOIN Products p ON s.ProductID = p.ProductID
GROUP BY p.Category
HAVING
AVG(p.RecommendedPrice) >= AVG(s.SalePrice)+10
|
测试项目#10:不使用叠代构建,返回所由销售产品的销售日期,并按照该日期升序排列,答案见列表K:
SELECT
s.SaleDate,
s.SalePrice,
(
SELECT
SUM(SalePrice)
FROM
Sales s2
WHERE
s2.SaleDate <= s.SaleDate
) AS RunningTotal
FROM
Sales s
ORDER BY
s.SaleDate ASC
|
评分
我曾经使用类似的考题去考察很多应聘SQL Server数据库开发职位的人,但是迄今为止,只有2个人可以正确地回答出所有的问题。
平均分大约为50-60%,如果应聘者的表现高于这个平均分,那么我就认为他或她是一位优秀的TSQL程序员,如果应聘者获得了90%以上的得分,那么他或她就是一位非常优异的程序员。
如果您对我的答案有任何问题或者想发表评论,请在文章的讨论区发贴进行讨论。
(责任编辑:王瑞)
<<上一页
1
2
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:课程讲解 如何使用SQL Server校勘功能 下一篇:如何在SQL Server中构建并利用UDF表格
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】