嵌套 SQL 和带有 WHERE CLAUSE ISSUE 的计算字段

Nested SQL and calculated field with WHERE CLAUSE ISSUE

我正在尝试进行以下查询:

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

需要的输出:

TABLE 格式:

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

期望的输出:

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

我正在使用 oracle 11g isql

任何帮助将不胜感激

如果我的理解是正确的..这就是你需要达到的目标

  1. 需要显示轿车和suv的平均零售价
  2. 需要显示除轿车和suv以外的其他品类的平均零售价if
    总和(库存)/计数(类别)> 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

可以有更好的方法..但我很快想到了这个..试着检查一下