mysql — получает количество строк предельного значения sql переполнение стека

У меня есть торговля таблицей SQL со следующими данными

  id| value
1| 0.1
2| 0.5
3| 0.9
4| 0.3

Как мне сделать запрос SQL, чтобы получить количество записей, ограниченное общим значением 0,8 по возрастанию по идентификатору в php.
Например:-

COUNT id FROM trade WHERE SUM(value) > 0.8 by id ASC

Результат должен прийти как

 3

0

Решение

Вы должны сделать кумулятивное суждение, потому что ваша версия 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 |
2

Другие решения

Мне кажется, вам нужна агрегатная функция, а накопленная сумма — для фильтрации желаемого результата.

 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
1

По вопросам рекламы [email protected]