网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>数据库技术>>Oracle技术>>Oracle开发>查看文档  
  使用T-SQL操作面试SQL Server开发人员     
  文章作者:未知  文章来源:未知  
  查看:160次  录入:管理员--2007-07-07  
 

预备考试脚本

在开始考试之前,我需要一个模式和一些数据来运行所要考核的查询,列表A创建了所需的这些数据:

列表A:

IF OBJECT_ID('Sales') > 0
       DROP TABLE Sales
 GO
 IF OBJECT_ID('Customers') > 0
       DROP TABLE Customers
 GO
 IF OBJECT_ID('Products') > 0
       DROP TABLE Products
 GO
 CREATE TABLE Customers
 (
 CustomerID INT IDENTITY PRIMARY KEY,
 FirstName VARCHAR(50),
 LastName VARCHAR(50),
 City VARCHAR(50),
 State CHAR(2),
 Zip VARCHAR(10)
 )
 GO
 CREATE TABLE Products
 (ProductID TINYINT IDENTITY PRIMARY KEY,
ProductName VARCHAR(20),RecommendedPrice 
MONEY,Category VARCHAR(10)
 )GO CREATE TABLE Sales(SaleID INT IDENTITY 
PRIMARY KEY,ProductID TINYINT NOT NULL 
REFERENCES Products(ProductID),CustomerID INT 
NOT NULL REFERENCES Customers(CustomerID),SalePrice 
MONEY NOT NULL,SaleDate SMALLDATETIME NOT NULL)GO
 INSERT INTO Products(ProductName, RecommendedPrice, Category)
VALUES('DVD',105,'LivingRoom')INSERT INTO 
Products(ProductName, RecommendedPrice, Category) 
VALUES('Microwave',98,'Kitchen')INSERT 
INTO Products(ProductName, RecommendedPrice, 
Category)VALUES('Monitor',200,'Office')INSERT 
INTO Products(ProductName, RecommendedPrice, Category)
VALUES('Speakers',85,'Office')INSERT INTO 
Products(ProductName, RecommendedPrice, Category) 
VALUES('Refrigerator',900,'Kitchen')INSERT INTO 
Products(ProductName, RecommendedPrice, Category)
VALUES('VCR',165,'LivingRoom')
 INSERT INTO Products(ProductName, RecommendedPrice, Category)
 VALUES('CoffeePot',35,'Kitchen')GO
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('John','Miller','Asbury','NY','23433') INSERT INTO 
Customers(FirstName, LastName, City, State, Zip) 
VALUES('Fred','Hammill','Basham','AK','85675')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Stan','Mellish','Callahan','WY','38556')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Adrian','Caparzo','Denver','CO','12377')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Mike','Horvath','Easton','IN','47130')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Irwin','Wade','Frankfurt','KY','45902')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('George','Marshall','Gallipoli','ND','34908')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Frank','Costello','Honolulu','HI','23905')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Billy','Costigan','Immice','SC','75389')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Shelly','Sipes','Lights','AZ','35263')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Chirsty','Melton','Spade','CA','97505')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Amanda','Owens','Flask','CN','50386')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Brittany','Smits','Bourbon','KY','24207')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Kristy','Bryant','Tarp','FL','58960')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Kelly','Street','TableTop','ID','57732')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Tricia','Hill','Camera','ME','46738')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Holly','Raines','Compact','MS','35735')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Natalie','Woods','Woods','IN','87219')
 INSERT INTO Customers(FirstName, LastName, City, State, Zip) 
VALUES('Wendy','Hilton','Action','KY','47093')
 GO
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,1,130,'2/6/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,2,97,'1/7/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,3,200,'8/8/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(4,4,80,'4/9/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(5,5,899,'10/10/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(6,6,150,'10/11/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,7,209,'12/12/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(4,8,90,'5/13/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(6,9,130,'6/14/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,14,85,'6/19/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,15,240,'9/20/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,16,99,'7/21/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,17,87,'3/22/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,18,99,'1/23/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(6,19,150,'3/24/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(5,5,900,'3/10/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(4,6,86,'8/11/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,7,88,'8/12/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,8,198,'12/13/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,9,150,'5/14/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(6,14,99,'7/19/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(6,15,104,'9/20/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,16,270,'2/21/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(4,17,90,'7/22/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,1,130,'3/6/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,2,102,'4/7/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(1,3,114,'11/8/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(5,4,1000,'5/9/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(5,5,1100,'10/10/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,6,285,'6/11/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(2,7,87,'10/12/2005')
 INSERT INTO Sales(ProductID, CustomerID, SalePrice, SaleDate) 
VALUES(3,8,300,'7/13/2005')
 GO

一旦我载入了这些数据,我就可以开始测试了(提示:我会让应聘者将他们编写的SELECT/UPDATE/INSERT/DELETE 语句存储在一个文本文件中,这样我以后可以随时阅览)。

测试

测试项目#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%以上的得分,那么他或她就是一位非常优异的程序员。

如果您对我的答案有任何问题或者想发表评论,请在文章的讨论区发贴进行讨论。

 
 
上一篇: 如何在SQL Server中构建并利用UDF表格    下一篇: 浅析Oracle数据库的最大可用性体系结构
  相关文档
oracle数据库中管理表空间和数据文件 (1) 04-24
oracle11g之初体验 数据中心自动化等功能 09-24
一个完整的oracle rman备份恢复参考示例 05-29
轻松掌握oracle peeking 绑定变量的控制 11-15
三种Windows版本下教你如何卸载Oracle 05-27
解析:怎样屏蔽oracle中的英文提示信息 11-19
为什么oracle有时会用索引来查找数据? 11-15
个人经验总结:oracle 10g手工创建数据库 08-11
讲解oracle数据库ora-00257故障的解决过程 (1) 07-15
改变优化参数来适应库缓冲区中sql的变化 03-14
oracle数据库中获取数据的存储过程示例 08-05
Oracle数据库SPFILE文件特点及具体操作 06-03
用Oracle 10g列值掩码技术隐藏敏感数据 04-11
Oracle数据库的四种启动方式 09-29
在Oracle 8x中实现自动断开后再连接 01-15
如何恢复只有完好数据文件的Oracle数据 05-27
使用type方式,解决in列表过长的问题 (1) 02-27
初学者应该如何理解oracle的架构知识 (1) 03-04
解析:Oracle9i到10g空闲等待事件的变化 09-01
正确认识oracle peeking绑定变量的控制 01-24
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息