运行不带子查询的查询以产生结果

时间:2017-04-13 15:25:01

标签: sql aggregate-functions

'MotorVehicles' Table

我运行查询以查找AVG(价格)* 2'附表,然后我运行另一个查询,我替换了AVG(价格)* 2'有了一个硬编号,我能够在结果表中得到两个记录,我试图在'有'中使用聚合函数。但是我的结果表是空的。需要一些帮助我想制定一个没有子查询的SELECT语句来找到所有价格大于或等于' AVG(Price * 2)'在附表中。

提前致谢

3 个答案:

答案 0 :(得分:0)

许多方法,这不是很好,但它可以工作:

;with cte_a as
(
    select avg(Price)*2 [Average]
    from yourTable
    -- or whatever your query to get average is as long as only 1 result
)
select *
from yourTable yt
inner join cte_a a on 1 = 1
where price >= a.Average

答案 1 :(得分:0)

select * from MotorVehicles where price > (select avg(price) from t)*2;

如果这是您想要避免的子查询,我道歉。

答案 2 :(得分:0)

您可以使用分区的AVG()获得类似的东西。

DECLARE @T TABLE
(
    X INT
)

INSERT @T SELECT 1
INSERT @T SELECT 10
INSERT @T SELECT 15
INSERT @T SELECT 20

SELECT X,XAVG=AVG(X) OVER(PARTITION BY 1 ) FROM @T   

导致:

X   XAVG
1   11
10  11
15  11
20  11