我有一个sql表,其中包含以下数据
id| value | price
1| 0.1 |1
2| 0.5 |2
3| 0.9 |2
4| 0.3 |2
如何进行sql查询,以便按id升序获得price 2的总值限制为0.9的条目数。为了example:-
Select Count of id FROM trade WHERE sum(value) <= 0.9 and price = '2'
结果应该是
3
因为总共有3个条目,id为2、3、4,值为0.5、0.9、0.3,价格为2。它们的和是1.7,大于0.9,但是如果我们取0.5和0.3,它合起来就是0.8,小于0.9。所以结果应该是3,因为它的值至少是0.9,价格是2。
还有一种方法可以按顺序获得具有最后一个和第一个最高值的结果的id。
所以看起来像:-
4
2
3
感谢您的帮助:)
3条答案
按热度按时间14ifxucb1#
如果需要distinct id值的计数,可以使用count(distinct id)
并检查聚合结果(sum()..),您应该使用having而不是where
如果您希望id不为null的行的计数,那么可以使用count(id)
注意:您使用的是price作为字符串
cngwdvgl2#
内部查询统计累计和和和附加字段
mark
,等于one
当和小于0.9时变为零。因为它是在一步之后工作的,所以它会在sum超过限制的地方聚集第一行。内部选择的结果
现在在外部查询中,您只需要使用
mark
等于1。结果是4,2,3
sqlfiddle演示k10s72fa3#
可以通过使用存储部分和和和已用行数的临时sql变量来实现这一点。请注意,有两个sql语句:
这样,部分和只建立一次。如果没有变量,则需要构建另一个子查询来构建多个部分和。
这里是sql小提琴:http://sqlfiddle.com/#!2011年9月38日
另请参阅:在mysql中创建一个累计和列
您也可以使用变量来存储所涉及的ID,即:
参见小提琴:http://sqlfiddle.com/#!9/38fc2/33/0号