问题
单项选择题
(31)到(35)题使用下列数据表。 “作者”表: 作者编号 姓名 所在城市 1101 张晓云 北京 1102 李 丽 北京 1103 袁熙林 上海 1104 赵三立 广州 1105 方德胜 上海 1106 刘 清 北京 “图书”表: 图书编号书名 出版单位价格 作者编号 页数 1101 计算机基础知识 经济科学出版社 32.80 1101 252 2202 会计基础知识 经济科学出版社 17.80 1105 215 1102 VB 9.0初级入门 人民邮电出版社 22.50 1102 264 1103 Word 2003基础知识 大地出版社 19.80 1101 298 1105 VFP 6,0程序设计基础 大地出版社 38.50 1103 310 2201 中级会计财务知识 经济科学出版社 28.80 1106 245 1110 计算机网络基础 高等教育出版社 26.50 1101 258 1111 计算机组成原理 北京大学出版社 31.20 1103 98 1112 数据库设计原理 高等教育出版社 35.50 1101 330 1113 C语言程序设计 北京大学出版社 32.00 1102 326 1114 软件设计分析 高等教育出版社 34.50 1102 330 2203 信息系统分析理论 经济科学出版杜 24.50 1102 235 |
求至少出版3本以上图书的作者姓名及数量,下列SQL语句正确的是( )。
A.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; HAVING COUNT(*)>=3
B.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 HAVING COUNT(*)>=3
C.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; FOR 作者.作者编号=图书.作者编号; WHERE 图书.作者编号 HAVING COUNT(*)>=3
D.SELECT 姓名,COUNT(*) AS 数量 FROM 图书,作者; WHERE 作者.作者编号=图书.作者编号; GROUP BY 图书.作者编号 SET COUNT(*)>=3
答案
参考答案:B
解析: 本题中首先通过GROUP BY短语按“作者编号”字段对“图书”表中的记录进行分组,然后利用COUNT()分组统计每个作者的图书数量,再通过HAVING子句限定出版数量至少在3本以上的记录。注意:HAVING子句用来进一步限定分组要满足的条件,必须要与OROUP BY短语连用并接在GROUP BY短语之后。