2010-04-28 98 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