在SQL Server 2008中,设有职工表(职工号,姓名,所在部门,工资),现要建立查询指定部门的最高工资的标量函数。下列语句中正确的是( )。

admin2021-02-05  8

问题 在SQL Server 2008中,设有职工表(职工号,姓名,所在部门,工资),现要建立查询指定部门的最高工资的标量函数。下列语句中正确的是(       )。

选项 A、CREATE FUNCTION dbo.f_AvgSalary(@dept varchar(20))
RETURNS INT AS
BEGIN
RETURN(SELECT MAX(工资) FROM 职工表 WHERE 所在部门 = @dept)
END
B、CREATE FUNCTION dbo.f_AvgSalary(@dept varchar(20))
RETURNS INT AS
BEGIN
DECLARE @x INT
SET @x = SELECT MAX(工资) FROM 职工表 WHERE 所在部门 = @dept
RETURN (@x)
END
C、CREATE FUNCTION dbo.f_AvgSalary(@dept varchar(20))
RETURNS INT AS
BEGIN
RETURN(SELECT MAX(工资) FROM 职工表 WHERE 所在部门 = @dept
GROUP BY 所在部门)
END
D、CREATE FUNCTION dbo.f_AvgSalary(@dept varchar(20))
RETURNS INT AS
BEGIN
DECLARE @x INT
SET @x = SELECT MAX(工资) FROM 职工表 WHERE 所在部门 = @dept
GROUP BY 所在部门
RETURN (@x)
END

答案A

解析 GROUP BY子句的作用是将查询的结果按照指定的字段进行分组,而题目中要求建立查询,查找指定部门中员工的最高工资,可以仅使用条件查询完成该功能,并且不需要对"所在部门"字段进行分组操作,故可以排除C、D选项。SET语句主要作用是给变量赋值,且一个变量只有一个值。而一个部门可能存在一个或多个人工资一样多且是最高的,那么B选项不符合要求。故选择A选项。
转载请注明原文地址:https://kaotiyun.com/show/7clZ777K
0

最新回复(0)