2010-04-28 4 views
1

Не могу получить эту работу, может ли кто-нибудь помочь.MYSQL Query с использованием подзапроса

Перечислите номер детали, описание детали и значение 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

Добавлена ​​таблица, чтобы увидеть, если это помогает –

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. Вы на самом деле не делаете никакого агрегации, поэтому вводить его в заблуждение. Извините, я пропустил это в первый раз. –

Смежные вопросы