带有WHERE子句问题的嵌套SQL和计算字段

带有WHERE子句问题的嵌套SQL和计算字段,sql,oracle11g,where,average,Sql,Oracle11g,Where,Average,我正在尝试使以下查询正常工作: 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')

我正在尝试使以下查询正常工作:

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
所需输出:

  • 我想显示制造商名称和库存类别
  • 我想生成一个计算字段,其中本田和通用的平均零售价格式为$XX.XX
  • 我还想列出所有类别的平均零售价都在5000美元以上
表格格式:

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

Manufactuer Name - Stock Category - (Calculated Field)
Honda              Sedan            $XX.XX
我正在使用Oracle11gISQL


如果我的理解正确,任何帮助都将不胜感激。这就是你需要实现的目标

  • 需要显示轿车和suv的平均零售价格
  • 如果
    总数(库存)/数量(类别)>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
    
    您可以根据自己的意愿提供
    $
    符号和
    四舍五入


    有更好的方法..但我会很快想到这一点..试着检查一下

    当你不使用mysql时,请不要使用
    mysql
    标记。@ITworldR你的query@Sachu当我运行这个安静的时候,我似乎为所有类别的平均价格产生了相同的价值。我注意到,第二个where子句手动计算大于5000的类别的所有值/计数之和的平均值,但不会产生任何结果results@ITworldRr你只对本田和通用汽车进行查询吗?@Sachu谢谢你的回复,不,我不是只为本田和通用运行它,该部分用于嵌套子查询。第二个WHERE子句假设在平均零售类别价格超过5000的基础上向输出中添加额外的行