[考題] 資料庫應用 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