首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找达到某一和所需的行数

查找达到某一和所需的行数
EN

Stack Overflow用户
提问于 2013-01-29 08:21:32
回答 1查看 415关注 0票数 0

我想要找出排序表列的行数,以便它们的总和达到一定大小。以下是我在代码中(效率非常低)的尝试:

代码语言:javascript
运行
复制
DECLARE @CURNUM AS INT
DECLARE @CURSUM AS MONEY
SET @CURSUM=0.0
SET @CURNUM=1
WHILE @CURSUM<100000
BEGIN
     SET @CURNUM=@CURNUM+1
     SELECT @CURSUM = SUM(val1) FROM 
     (SELECT top (@CURNUM) val1 from table order by val1) a
END
print @CURNUM

有没有人有更快实现的建议?我不知道如何选择表的第i行,但如果我这样做了,效率会更高,这是我下一步要尝试的方法。

一个不幸的限制:由于缺乏数据库权限,我不能创建过程或函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-29 08:24:56

假设您使用的是2012年之前的版本:

代码语言:javascript
运行
复制
select count(*)
from (select t.*,
             (select sum(val1) from table t2 where t2.val1 <= t.val1) as cumesum
      from table t
     ) t
where cumesum <= 100000

这将使用相关子查询计算累积总和。然后,它只计算小于或等于阈值的数字。

在SQL Server 2012中,cumesum的表达式为:

代码语言:javascript
运行
复制
sum(val1) over (order by val1) as cumesum
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14573672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档