问题
单项选择题
给定供应关系SPJ(供应商号,零件号,工程号,数量),查询至少供应了3项工程(包含3项)的供应商,输出其供应商号和供应零件数量的总和,并按供应商号降序排列。
SELECT供应商号,SUM(数量)FROM SPJ
()
()
();
SELECT供应商号,SUM(数量)FROM SPJ
GROUP BY供应商号
HAVING COUNT(DISTINCT(工程号))>2
()
A.ORDER BY供应商号DESC
B.GROUP BY供应商号DESC
C.ORDER BY供应商号
D.GROUP BY供应商号
答案
参考答案:A
解析:
[分析]:
试题(30)根据题意查询至少供应了3项工程(包括3项)的供应商,应该按照供应商号分组,而且应该加上条件工程号的数目。但是需要注意的是,一个供应商可能为同一个项目供应了多种零件,因此,在统计工程项目数的时候需要加上DISTINCT,以避免重复统计导致错误的结果。
假如按供应商号Sno=’S1’分组,结果如表16-3所示。
表16-3 按工程号JNO=’J1’分组
Sno | Pno | Jno | Qty | Sno | Pno | Jno | Qty |
S1 S1 S1 S1 | P1 P3 P3 P3 | J1 J1 J2 J2 | 200 400 200 100 | S1 S1 S1 | P1 P6 P3 | J3 J3 J3 | 200 300 200 |
从表16-3可以看出,如果不加DISTINCT,统计的数为7,而加了DISTINCT,统计的数是3。故试题(31)正确的答案是A。
要求按供应商号降序排列,所以应按供应商号分组,同时加上DESC按降序排列。故试题(32)正确的答案是A。