测试项目#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%以上的得分,那么他或她就是一位非常优异的程序员。
假如您对我的答案有任何问题或者想发表评论,请在文章的讨论区发贴进行讨论。
评论加载中…
![]() |