单选题
12.
设有教师表(教师号,教师名,职称,所在部门),其中“教师号”是主码,“职称”列允许有空值,其他列不允许空。现要查询人数最多的三个部门。下列语句中不能正确完成该查询要求的是______。
A、
SELECT TOP 3 所在部门, COUNT(职称) FROM 教师表
GROUP BY 所在部门
ORDER BY COUNT(职称) DESC
B、
SELECT TOP 3 所在部门, COUNT(教师号) FROM 教师表
GROUP BY 所在部门
ORDER BY COUNT(教师号) DESC
C、
SELECT TOP 3 所在部门, COUNT(教师名) FROM 教师表
GROUP BY 所在部门
ORDER BY COUNT(教师名) DESC
D、
SELECT TOP 3 所在部门, COUNT(*) FROM 教师表
GROUP BY 所在部门
ORDER BY COUNT(*) DESC
【正确答案】
C
【答案解析】
COUNT(*)返回表的行数,它不会过滤null和重复的行。COUNT(表达式)会过滤掉null值,所以值null行不会加入到计数当中,但如果不在“表达式”前面加上distinct关键字,它将会过滤掉重复行。由于“职称”列中有空值,所以使用COUNT(职称)会过滤掉“职称”为空的行,从而不能正确地统计出人数最多的三个部门。故答案为C项。
提交答案
关闭