(31)~(35)题使用下列数据表。
部门 (部门号C(2)、部门名称C(10))
职工 (部门号C(2)、职工号C(4)、姓名C(8)、基本工资N(7,2))
检索最少有5名职工的每个部门的职工基本工资的总额( )。
A.SELECT 部门号,COUNT(*),SUM(基本工资) FROM 职工; HAVING COUNT(*)>=5
B.SELECT 部门号,COUNT(*),SUM(基本工资) FROM 职工; GROUP BY 基本工资 HAVING COUNT(*)>=5
C.SELECT 部门号,COUNT(*),SUM(基本工资) FROM 职工; GROUP BY 部门号 HAVING COUNT(*)>=5
D.SELECT 部门号,COUNT(*),SUM(基本工资) FROM 职工; GROUP BY 部门号 WHERE COUNT(*)>=5
参考答案:C
解析: 在分组与计算查询语句中,使用HAVING子句可以对分组进一步加以控制。用这个子句定义这些组所必须满足的条件,以便将其包含在结果中,HAVING子句必须与GROUP BY短语同时使用。
本题中先由GROUP BY子句按“部门号”对记录行进行分组;再执行COUNT()函数统计每组中有多少个记录,执行SUM()函数计算每个组的基本工资总和;最后执行HAVING子句,只有记录总数大于等于5的组才输出结果,即部门职工在5名(含)以上的。注意:此时输出的组记录是计算后的记录,即每组只包含一条记录,输出信息包括该部门的部门号、总人数和职工工资总和。