如何更改此查询以使用join而不是子查询?
SELECT ID, Name, UnitPrice
FROM Products
WHERE UnitPrice <
( SELECT AVG( UnitPrice ) FROM Products )
ORDER BY UnitPrice DESC;
由于
答案 0 :(得分:2)
另一种选择是使用窗口函数
;with cte as (
SELECT ID
, Name
, UnitPrice
, AvgPrice = avg(UnitPrice) over (Order By (Select NULL))
FROM Products
)
Select * from cte where UnitPrice<AvgPrice
答案 1 :(得分:1)
有一种方法可以通过以下方式进行连接:
SELECT T1.*
FROM [dbo].[Table_1] AS T1
INNER JOIN ( SELECT AVG( Number ) as Number FROM [Table_1] ) AS T2
ON T1.Number < T2.Number
ORDER BY T1.UnitPrice DESC;
否则使用变量来存储该值
答案 2 :(得分:0)
您可以使用
上的联接来执行此操作或可以使用:
但你的qry是最清晰的解决方案。