[考题] 数据库应用 102年 第四题(资讯处理)

楼主: okara (居家的阿宅)   2015-07-07 17:36:16
资讯处理 数据库应用 102年 第四题
4. 已知有一手机制造公司数据库纲目如下:
工程师(编号,名字,年龄,性别,薪水)
产品(代号,名目,年销量,售价)
设计(编号,代号)
请用SQL回答下列问题:
(三)针对年销售量高于20万只的每一项产品,
且参与设计此产品的工程师数目不超过5人的,
列出其产品名目和工程师的平均薪水。
Ans:
(三)
(高上解答)
SELECT 名目,AVG(薪水)
FROM 产品,工程师,设计
WHERE 产品.代号=设计.代号
AND 设计.编号=工程师.编号
AND 产品.年销售量>200000
GROUP BY 名目
HAVING COUNT(工程师.编号) <= 5
(我的疑问是)
如果GROUP BY用名目的话,这样一旦代号不同而名目相同,就会一起计算。
这样结果不就跟题目所要求的不一样。
所以这里GROUP BY,是不是应该用 GROUP BY 产品.代号?
请版上强者为我解惑 感恩
作者: malowda (malowda)   2015-07-07 20:36:00
你会这样觉得是没错但也就表示你对GROUP BY的用法不熟
作者: gunhello (资深动感超人)   2015-07-07 20:46:00
基本上select时,就决定了group by若要 by 产品.代号,一开始select 就要 产品.代号
作者: ko74652 (Reese lin)   2015-07-07 21:00:00
你从哪里群聚就要把他显示出来啊..而且这题你也考虑的太周到了XD
作者: emstarbucks (花榭清风)   2015-07-07 22:16:00
考试应该以sql92标准语法为主,你提到的情况在sql99印象中有针对主键还是功能相依做一点改善,所以在Sql99你提出的语法应该是能跑的。但是在sql92会显示Error(凭印象回的 有错别怪我啊囧 考前没时间帮你确认一下..)
作者: lexus7310 (Fox)   2015-07-07 23:08:00
你说的没错 但你要group by 编号 名目才能select 编号名目 avg 你会多一个编号
楼主: okara (居家的阿宅)   2015-07-07 23:22:00
感谢各位强者热情回应 我大概知道了 再次感谢对不起,应该是group by 代号 不是group by编号 之前打错

Links booklink

Contact Us: admin [ a t ] ucptt.com