where EXISTS (SELECT SalesOrder.CustomerID FROM SalesOrder WHERE Customer.CustomerID = SalesOrder.CustomerID AND SalesOrder.OrderTotal <= 100)
Answer: A
67 有名为 Customer 和 SalesOrder 的两个表。在 Customer 表中有 1000 个客户,其中 900 个客户在 SalesOrder 表中有订单。你执行下列查询来列出至少有一个销售数据的所有客户。
SELECT * FROM CustomerWHERE Customer.CustomerID IN (SELECT Customer.CustomerID FROM SalesOrder) 这个查询返回哪个 结果?
A.无结果 B.一条警告消息 C. Customer 表中的 1000 行记录
D. The 900 rows in the Customer table with matching rows in the SalesOrder table 答案:C
68 Customer 表中有下列行: CustomerId Status ------------- ----------- 1 Active 2 Active 3 Inactive 4 NULL 5 Dormant 6 Dormant
你写下列查询返回他们的 Status 为 NULL 或者?Dormant?的所有客户。 SELECT * FROM Customer
WHERE Status NOT IN (NULL, 'Dormant') 你需要确认查询结果。你预期是哪个结果? A. CustomerId Status
------------ -----------
B. CustomerId Status 1 Active 2 Active 3 Inactive
C、CustomerId Status
1 Active 2 Active 3 Inactive 4 NULL
D、CustomerId Status
1 Active 2 Active 3 Inactive 4 NULL 5 Dormant 6 Dormant 答案:A
第 26
页
69 你有一个名为 Employee 的表。你通过插入每个雇员的主管的 EmployeeID 作为 ReportsTo 列来记录你 公司组织的等级制度。你需要写一个生成雇员和他们主管列表的递归查询。这个查询必须包括该雇员在等 级制度中的等级。你写了下面的代码段。(包含的行号只用于参照) 01 WITH EmployeeList (EmployeeID, FullName, ManagerName, Level) 02 AS ( 03 04 )
05 SELECT EmployeeID,
FullName, ManagerName, Level 06 FROM EmployeeList;
你应该在 03 行插入哪个代码?
A. SELECT EmployeeID,FullName,'' AS [ReportsTo],1 AS [Level] FROM Employee WHERE ReportsTo IS NULL UNION ALL
SELECT emp.EmployeeID,emp.FullNName,mgr.FullName,1 + 1 AS [Level] FROM Employee emp JOIN Employee mgr ON emp.ReportsTo = mgr.EmployeeID
B. SELECT EmployeeID,FullName,'' AS [ReportsTo],1 AS [Level] FROM Employee WHERE ReportsTo IS NULL UNION ALL
SELECT emp.EmployeeID,emp.FullName,mgr.FullName,mgr.Level + 1 FROM EmployeeList mgr JOIN Employee emp ON emp.ReportsTo = mgr.EmployeeId
C. SELECT EmployeeID,FullName,'' AS [Reports To],1 AS [Level] FROM Employee UNION ALL
SELECT emp.EmployeeID,emp.FullName,mgr.FullName,1 + 1 AS [Level] FROM Employee emp LEFT JOIN Employee mgr ON emp.ReportsTo = mgr.EmployeeID
D. SELECT EmployeeID,FullName,'' AS [ReportsTo],1 AS [Level] FROM Employee UNION ALL
SELECT emp.EmployeeID,emp.FullName,mgr.FullName,mgr.Level + 1 FROM EmployeeList mgr JOIN Employee emp ON emp.ReportsTo = mgr.EmployeeID 答案:B
70 你需要确定执行这个代码段的结果。 ]DECLARE @RangeStart INT = 0; DECLARE @RangeEnd INT = 10000; DECLARE @RangeStep INT = 1; WITH NumberRange(ItemValue) AS (SELECT ItemValue
FROM (SELECT @RangeStart AS ItemValue) AS t UNION ALL
第 27 页
SELECT ItemValue + @RangeStep FROM NumberRange
WHERE ItemValue < @RangeEnd) SELECT ItemValue FROM NumberRange
OPTION (MAXRECURSION 100) 将返回哪个结果?
A. 101 rows will be returned with no error. B. 10,001 rows will be returned with no error.
C. 101 rows will be returned with a maximum recursion error. (返回 101 行记录并有最大递归错误)
D. 10,001 rows will be returned with a maximum recursion error. 答案:C
71 你需要实现公用表表达式。你应使用哪个代码段? A. CREATE VIEW SalesByYear AS
SELECT Year,Region,SUM(OrderTotal) FROM Orders GROUP BY Year, Region; GO
SELECT Year,Region,Total FROM SalesByYear;
B. WITH SalesByYear(Year,Region,Total)
AS (SELECT Year,Region,SUM(OrderTotal)FROM Orders GROUP BY Year,Region)
SELECT Year,Region,TotalFROM SalesByYear;
C. SELECT Year,Region,Total
FROM (SELECT Year,Region,SUM(OrderTotal) AS Total FROM Orders GROUP BY Year, Region) AS [SalesByYear];
D. SELECT DISTINCT Year,Region,
(SELECT SUM(OrderTotal) FROM Orders SalesByYear WHERE Orders.Year = SalesByYear.YEAR
AND Orders.Region = SalesByYear.Region) AS [Total] FROM Orders; 答案:B
72 你的任务是分析下列查询的封锁行为:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE WITH Customers AS (SELECT * FROM Customer ),
SalesTotal AS ( SELECT CustomerId, SUM(OrderTotal) AS AllOrderTotal FROM SalesOrder)
SELECT CustomerId, AllOrderTotal FROM SalesTotal
WHERE AllOrderTotal > 10000.00;
你需要确定其他使用客户表的查询是否被这一查询阻塞。 你也需要确定这个查询是否会被其他正使用客户表的查询阻塞。你预期会有什么行为? A、此查询将阻塞其他查询,其他查询将阻塞此查询
第 28 页
B、此查询将阻塞其他查询,其他查询不会阻塞此查询 C、此查询不会阻塞其他查询,其他查询将阻塞此查询 D、此查询不会阻塞其他查询,其他查询不会阻塞此查询
答案:D
73 你使用下列语句创建和填充一个名为 SiteNavigation 的数据表。
CREATE TABLE SiteNavigation(
SiteNavigationId INT PRIMARY KEY,Linktext VARCHAR(10), LinkUrl VARCHAR(40),
ParentSiteNavigationId INT NULL REFERENCES SiteNavigation(SiteNavigationId))
INSERT INTO SiteNavigation
VALUES (1,'First','http://first',NULL) ,(2,'Second','http://second',1) ,(3,'Third','http://third',1) ,(4,'Fourth','http://fourth',2) ,(5,'Fifth','http://fifth',2) ,(6,'Sixth','http://sixth',2)
,(7,'Seventh','http://seventh',6) ,(8,'Eighth','http://eighth',7)
你的任务是编写一个查询,列出 引用从根节点的两个层次的所有网站。 LinkText LinkUrl DistanceFromRoot ---------- -------------------------- ---------------- Fourth http://fourth 2 Fifth http://fifth 2 Sixth http://sixth 2 Seventh http://seventh 3 Eighth http://eighth 4 你写了下列查询
WITH DisplayHierarchy
AS (SELECT LinkText, LinkUrl,
SiteNavigationId, ParentSiteNavigationId,0 AS DistanceFromRoot FROM SiteNavigation WHERE ParentSiteNavigationId IS NULL UNION ALL
SELECT SiteNavigation.LinkText, SiteNavigation.LinkUrl,
SiteNavigation.SiteNavigationId, SiteNavigation.ParentSiteNavigationId, dh.DistanceFromRoot + 1 AS DistanceFromRoot
FROM SiteNavigation INNER JOIN DisplayHierarchy dh
ON SiteNavigation.ParentSiteNavigationId = dh.SiteNavigationId)
SELECT LinkText, LinkUrl, DistanceFromRoot FROM DisplayHierarchy
你需要对这个查询附上一个 WHERE 子句。 你应使用哪个子句? A. WHERE DistanceFromRoot =2 B. WHERE DistanceFromRoot < 2 C. WHERE DistanceFromRoot >= 2 D. WHERE DistanceFromRoot IN (2,3) 答案:C
7 4 . 你 有 两 个 视 图 S a l e s . S a l e s S u m m a r y O v e r a l l 和 S a l e s . C u s t o m e r A n d S a l e s S u m m a r y , 它 们的 定 义 如 下 : C R E A T E V I E W S a l e s . S a l e s S u m
第 29 页
m a r y O v e r a l l A S
S E L E C T C u s t o m e r I d , S U M ( S a l e s T o t a l ) A S O v e r a l l T o t a l F R O M S a l e s . S a l e s O r d e r G R O U P B Y C u s t o m e r I d G O
C R E A T E V I E W S a l e s . C u s t o m e r A n d S a l e s S u m m a r y A S
S E L E C T C u s t o m e r . N a m e , S a l e s S u m m a r y O v e r a l l .
O v e r a l l T o t a l , ( S E L E C T A V G ( O v e r a l l T o t a l ) F R O M S a l e s . S a l e s S u m m a r y O v e r a l l
W H E R E S a l e s S u m m a r y O v e r a l l . C u s t o m e r I d =
C u s t o m e r . C u s t o m e r I d ) A S a v g O v e r a l l T o t a l , ( S E L E C T M A X ( O v e r a l l T o t a l ) F R O M S a l e s . S a l e s S u m m a r y O v e r a l l W H E R E S a l e s S u m m a r y O v e r a l l . C u s t o m e r I d = C u s t o m e r . C u s t o m e r I d ) A S m a x O v e r a l l T o t a l , F R O M S a l e s . C u s t o m e r
L E F T O U T E R J O I N S a l e s . S a l e s . S a l e s S u m m a r y O v e r a l l
O N S a l e s S u m m a r y B y Y e a r . C u s t o m e r I d = C u s t o m e r . C u s t o m e r I d G O
你 的 任 务 是 修 改 S a l e s . C u s t o m e r A n d S a l e s S u m m a r y 视 图 ,去 掉 对 其 他 视 图 的 引 用 。为 了 完成 此 任 务 ,你 必 须 在 S a l e s . C u s t o m e r A n d S a l e s S u m m a r y 对 象 的 修 改 版 本 中 使 用 哪 个 特 性 ? A . T a b l e v a r i a b l e s ( 表 变 量 )
B . T e m p o r a r y t a b l e s ( 临 时 表 )
C . U s e r - d e f i n e d t a b l e t y p e s ( 用 户 自 定 义 表 类 型 ) D . C o m m o n t a b l e e x p r e s s i o n s ( 公 用 表 表 达 式 C T E ) A n s w e r : D
75 你需要编写一个查询,允许你对每个销售人员总销售额分成四组进行排名,其中排名结果前 25%为第1 组,下一个 25%为第 2 组,再下一个 25%为第 3 组,最低的 25%在第 4 组中。你应该使用哪个 T-SQL 语句? A. NTILE(1) B. NTILE(4) C. NTILE(25) D. NTILE(100) 答案:B
使用排名函数返回在结果集分区的连续顺序编号,每76 你需要编写一个查询,
个分区的第一行从1 开始。你应该使用哪个 T-SQL 语句?
A. RANK B. NTILE(10) C. DENSE_RANK D. ROW_NUMBER 答案:D
第 30 页