簡體   English   中英

獲取行數限制值sql php

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM