有表 Table_1, 字段 Value int, P float 。5
要取出以 Value 字段倒序的 P 字段累加和 不超过 整个表中P字段总和的 80%的行。 并在返回列表中 加入字段 SUM ,存放当前行与前面所有行的累加和。
折腾了半天, 写了下面的查询sql:
declare @e float select @e = sum(P) from [Table_1] Set @e = @e * 0.8 ;with T as ( select [ID] = row_number() over(order by [Value] desc), [Value], [P], (select sum(P) from [Table_1] a where a.[Value] >= b.[Value]) 'SUM' from [Table_1] b ) select * from T where [SUM] <= @e
共生成了 1.1 万行测试数据, 测试用试 12 秒, 运行效果图和原数据如上图所示。