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

admin2020-12-02  25

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

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

答案A

解析 GROUP BY子句的作用是将查询的结果按照指定的值进行分组,而题目要求查询指定部门的最高工资的,因此并不需要分组语句,可以排除C、D选项。SET语句主要作用是给变量赋值。一个变量只有一个值。而一个部门可能存在一个或多个人工资一样多且是最高的,所以B选项不正确。故选择A选项。
转载请注明原文地址:https://kaotiyun.com/show/MflZ777K
0

最新回复(0)