[英]Get count of rows limit value sql php
我有以下數據的SQL表交易
id| value
1| 0.1
2| 0.5
3| 0.9
4| 0.3
我如何進行SQL查詢,以便獲得的條目數限制為在PHP中按ID遞增的總值0.8。 例如:-
COUNT id FROM trade WHERE SUM(value) > 0.8 by id ASC
結果應該是
3
您需要進行累積判斷,因為您的mysql版本不支持window函數,因此該解決方案將很難閱讀,因為您需要編寫子查詢而不是window函數。
通過Id
列生成累積數,然后在子查詢中獲得MIN(ID)
,當Id = 3
該值將大於0.8
。
最后將ID變小並等於MIN(ID)
您將得到預期的結果。
CREATE TABLE trade(
id INT,
value FLOAT
);
INSERT INTO trade VALUES(1,0.1);
INSERT INTO trade VALUES(2,0.5);
INSERT INTO trade VALUES(3,0.9);
INSERT INTO trade VALUES(4,0.3);
查詢1 :
SELECT COUNT(*)
FROM trade t1
WHERE t1.id <= (
SELECT MIN(ID) FROM (
SELECT ID,(
SELECT SUM(tt.value)
FROM trade tt
WHERE tt.id <= t1.id
) total
FROM trade t1
) t1
where total > 0.8
)
結果 :
| COUNT(*) |
|----------|
| 3 |
在我看來,您需要匯總函數和累計和需要過濾所需的結果
set @csum := 0.0;
select count(id) from
(
select id,@csum := @csum + value as sum_val from t
order by id
) t1
where sum_val <1.3
http://sqlfiddle.com/#!9/abf460/2
count(id)
3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.