如果我有一个包含2列的表,并且我想从表中删除数据,其中表1的数据不在列2平均值的前90%之内
column 1 | column 2
-------------+----------------
100000.00 | 1000000.00
150000.00 | 1500000.00
180000.00 | 1800000.00
我已经获得了带有代码的平均价值
SELECT AVG([column2*0.1)
FROM #t
平均值= 143333.333333
但是我很难找到一种将值用作where条件的方法
答案 0 :(得分:0)
您可以使用子查询或cte执行此操作:
with cte as (select column1, avg(column2) over() avg_column2 from mytable)
delete from cte where column1 < avg_column2 * 0.1
答案 1 :(得分:0)
如果我正确理解了您的问题,也许可以为您提供帮助:
DECLARE @column2Avg decimal;
SELECT @column2Avg = AVG([column2])
FROM #t
DELETE FROM #t
WHERE column1 < @column2Avg*0.1
当然,您应该使用Transaction子句将其包装起来。