Вам необходимо принять кумулятивное решение, поскольку ваша версия mysql не поддерживает оконную функцию, поэтому решение будет немного сложным для чтения, потому что вам нужно написать подзапрос вместо оконной функции.
сделать кумулятивное число по столбцу 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 |