如何在没有子查询的情况下重写此查询?

时间:2010-11-12 01:23:14

标签: sql

所以我想做的事情:

我的桌子上有一些商店某些商品的价格,我想做的是找到从该商店出售的所有商品的平均价格,以及商店里出售的所有类似商品的总和。

我的专栏是:

  • ITEM_NO
  • 分支
  • totalamount

真正重要的是我必须避免子查询,所以我做不了类似的事情:

SELECT DISTINCT branch AS postcode, item_no, avg_price
FROM Prices 
NATURAL JOIN (SELECT branch, AVG(totalamount) avg_price FROM Prices GROUP BY branch) av
WHERE  sum  > avg_price ORDER BY turnover DESC , branch;

这正是我想要做的事情,但是我必须在没有子查询的情况下这样做。

编辑1问题:

派生表和临时表之间有什么区别?所以对于赋值,我不允许使用子查询或临时表,那么我的答案是否有这两个中的任何一个?

2 个答案:

答案 0 :(得分:0)

您可以在同一SELECT语句中的相同或不同列上指定多个聚合语句。要确切了解我的意思,请在线阅读书籍。

http://msdn.microsoft.com/en-us/library/ms177677.aspx

答案 1 :(得分:0)

在这里你可以做到这一点,

SELECT branch AS postcode, 
       item_no, 
       AVG(totalamount) avg_price , 
       SUM(totalamount) sum
FROM prices
WHERE  SUM(totalamount) > avg_turnover 
ORDER BY avg_turnover DESC , 
         eatit_Order.branch
GROUP BY branch, 
         item_no;