多选题 执行下面的语句会返回什么值?
SELECT SUM((AVG(LENGTH(NVL(SALARY,0)))))
FROM EMPLOYEES
GROUP BY SALARY;
假设有10条员工记录,除了一条记录的SALARY字段是空值外,每条记录包含的SALARY值为100。
【正确答案】 C
【答案解析】依据SALARY列划分数据集。该语句创建两个组:一个组的SALARY值为100,另一个组包含一个空的SALARY值。第一个组中各行的SALARY值100的平均长度是3。NVL函数首先将NULL薪水值转换为数字0,SALARY的平均长度是1。SUM函数作用于两个组,将值3和1相加,返回4。
A、B和D不正确。A似是而非,因为分组函数不可能嵌套多于两层。虽然有4个函数,但只有两个是分组函数,而其他函数是在分组函数之前计算的单行函数。如果选择表达式SUM(AVG(LENGTH(SALARY))),就会返回B中的结果。D不正确是因为C正确。