С помощью переменной считаю накапливаемую сумму с условием:
-- SELECT * FROM (
SELECT o2.uid, o2.ts,
(@till := IF (@till < o2.ts, o2.ts + 10, @till + 10)) AS until
FROM orders AS o2 JOIN (SELECT @till := 0) AS r
WHERE o2.uid = 1;
-- ) AS t1
создание таблицыCREATE TABLE orders (
id INT NOT NULL AUTO_INCREMENT,
uid INT NOT NULL ,
ts INT NOT NULL ,
PRIMARY KEY (id)
);
-- Paid duraion = 10
-- 1: 0-10, 12-22 + 21-31 = 32
-- 2: 12-22, 22-32 + 22-32 = 42
INSERT INTO orders (uid, ts)
VALUES (1,0), (2,12), (1,12), (1,21), (2,22), (2,22);
Внутренний запрос работает. Но если его обернуть во внешний
SELECT
, раскомментить строки, MySQL ругается на ошибку в строке 5, где
WHERE
MySQL 5.6,
SQL fiddle
Первый вопрос - в заголовке: «Почему?».
Второй вопрос: как из внутреннего запроса получить только последнее значение накопленное переменной?
Задача из таблицы заказов для каждого из пользователей, делваших заказы, расчитать значение вычисляемого параметра.