2010-04-28 103 views
1

不能得到這個工作,任何一個可以幫助。MySQL查詢使用子查詢

列表的部件編號,部件的描述,並且on_hand各部分的值使用子查詢,其在手單元的數量比的平均數量的現有量爲所有零件單位更?

SELECT PART_NUM, 
     DESCRIPTION, 
     SUM(ON_HAND * PRICE) ON_HAND_VALUE 
    FROM PART; 
WHERE MAX(ON_HAND); 
     (AVG(ON_HAND) > ON_HAND); 

部分表

PART_NUM DESCRIPTION  ON_HAND  CLASS WAREHOUSE PRICE 

AT94  Iron    50   HW   3  24.95 
BV06  Home Gym   45   SG   2  794.95 
CD52  Microwave Oven  32  AP   1  165.00 
DL71  Cordless Drill  21  HW   3  129.95 
DR93  Gas Range   8  AP   2  495.00 
DW11  Washer    12  AP   3  399.99 
FD21  Stand Mixer  22  HW   3  159.95 
KL62  Dryer    12  AP   1  349.95 
KT03  Dishwasher   8  AP   3  595.00 
KV29  Treadmill   9  SG   2  1390.00 

回答

2

假設每個部分中只有一個部分表記錄(你的數據結構是不是在所有的問題清楚),這應該給你想要的東西:

SELECT part_num, description, (on_hand * price) AS on_hand_value 
    FROM part 
    WHERE on_hand > (SELECT AVG(on_hand) FROM part) 

(根據您添加到您的問題的數據,我認爲這是正確的)。

+0

添加了表來查看這是否有幫助 – 2010-04-28 17:17:34

0

這是正確的方向由於在步驟中,我使用這一點。

SELECT PART_NUM, DESCRIPTION, SUM(ON_HAND * PRICE) AS ON_HAND_VALUE 
FROM PART 
WHERE ON_HAND > (SELECT AVG(ON_HAND) FROM PART) 
GROUP BY PART_NUM; 
+0

實際上,您應該刪除表達式中的SUM並刪除GROUP BY子句。你實際上沒有做任何的聚集,所以它的誤導將其列入。對不起,我錯過了第一次。 – 2010-04-28 18:30:37