2015-05-21 1 views
1

Я пытаюсь сделать следующую работу запроса: необходимВложенный SQL и вычисляемое поле с ИНЕКЕ ВЫПУСКА

SELECT m.name,s.category, 
'$' || cast((select avg(retail) from STOCK 
       INNER JOIN MANUFACTURER 
       ON STOCK.DEALERID=MANUFACTURER.DEALERID 
       WHERE s.category='sedan' or s.category='suv') 
       as decimal(4,2)) as AVG_RRP 
from manufacturer m 
     join stock s 
     using (DEALERID) 
     WHERE (select(sum(retail) from stock)/ 
       (select count(distinct category) from manufacturer)) >5000 

Выход:

  • Я хочу, чтобы показать имя производителя и запасов категории
  • Я хочу создать расчетное поле, где я нахожу среднюю розничную цену для HONDA и GM в формате $ XX.XX
  • Я хочу также перечислить среднюю розничную цену для всех категорий х годов более чем 5000

ТАБЛИЦА FORMAT:

MANFACTURER: DEALERID#,name,phone,state 
STOCK: VIN#,name,pudate,dealerid,cost,retail,sdiscount,category 

DESIRED ВЫВОД:

Manufactuer Name - Stock Category - (Calculated Field) 
Honda    Sedan   $XX.XX 

Я использую Oracle 11g ISQL

Любая помощь будет высоко ценится

+0

Пожалуйста, не используйте 'mysql' тег, когда вы не используете MySQL. – Barmar

+0

извините мою ошибку :) – ITworldR

+0

@ITworldR какая проблема подходит для вашего запроса – Sachu

ответ

1

Если мое понимание правильно, то это то, что y НУ должно достичь

  1. нужно показать среднюю розничную цену седана и внедорожника
  2. Нужно показать среднюю розничную цену другой категории, кроме седана и сув, если
    суммы (складочном)/Количество (категория) > 5000

Надежда ниже код может помочь вам

select m.name, 
     s.category, 
     avg(retail) 
from STOCK s , 
     MANUFACTURER m 
where 
    STOCK.DEALERID=MANUFACTURER.DEALERID 
    and (s.category='sedan' or s.category='suv') 
Group by m.name,s.cateogry 

Union 

select m.name, 
     s.category, 
     avg(retail) 
from STOCK s , 
    MANUFACTURER m 
where 
    STOCK.DEALERID=MANUFACTURER.DEALERID 
AND (select(sum(retail) from 
      stock s ,manufacturer m 
      where STOCK.DEALERID=MANUFACTURER.DEALERID 
      and (s.category !='sedan' or s.category !='suv') 
    )/ 
     select count(distinct category) 
      from stock s ,manufacturer m 
      where STOCK.DEALERID=MANUFACTURER.DEALERID 
      and (s.category !='sedan' or s.category !='suv'))) >5000 
Group by m.name,s.cateogry 

Вы можете дать $ символ и roundings по вашему желанию

может быть лучше way..but это приходит мне на ум быстро ..try и проверить