Получить количество строк предельного значения sql php - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть торговля таблицей 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

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вам необходимо принять кумулятивное решение, поскольку ваша версия 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 |
0 голосов
/ 03 сентября 2018

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

 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
...