某供应商数据库中的供应关系为SPJ(供应商号,零件号,工担号,数量),如下命令查询某工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号的降序排列。
SELECT工程号, (59) FROM SPJ
GROUP BY工程号 (60)
ORDER BY工程号DESC;
(60)应选入()。
A.HAVING COUNT (DISTINCT(供应商号))>2
B.Where COUNT(供应商号)>2
C.HAVING(DISTINCT(供应商号))>2
D.Where 供应商号>2试题(14)(15)分析
参考答案:A
解析:
[分析]: 本题考查SQL语言。
试题(14)正确的答案是选项B,因为SQL提供可为关系和属性重新命名的机制,这是通过使用具有如下形式的as子句来实现的。
Old-name as new-name
as子句即可出现在select子句,也可出现在from子句中。显然选项B满足上述规则。
试题(15)正确的答案是选项A,因为根据题意“某工程至少用了3家供应商(包含3家)供应的零件”,应该按照工程号分组,而且应该加上条件供应商的数目。但是需要注意的是,一个工程项目可能用了同一个供应商的多种零件,因此,在统计供应商数的时候需要加上DISTINCT,以避免重复统计导致错误的结果。
假如按工程号JNO=’J1’分组,结果如下表所示。
表1 按工程号JNO=’J1’分组
从上表可以看出,如果不加DISTINCT,统计的数为7;而加了DISTINCT,统计的数是5。