Рассмотрим следующую таблицу:
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
Столбец id
автоматически увеличивается, но содержит пробелы. Столбец value
является числовым.
Я хочу посмотреть на увеличение value
с течением времени, установив value
по отношению к value
двумя строками выше. То есть для строки id=85
я хочу установить value
строки id=85
(546) по отношению к value
строки id=27
(334). Таким образом, значение, которое нужно вычислить для строки id=85
, равно 546/334=1,63473.
Вот результат, которого я хочу достичь:
SELECT id, value, ...;
+-----+---------+---------------------+
| id | value | value/lag(value, 2) | (the syntax value/lag(value, 2) is made up)
+-----+---------+---------------------+
| 12 | 158 | NULL |
| 15 | 346 | NULL |
| 27 | 334 | 2.11392 | (334/158=2.11392)
| 84 | 378 | 1.09248 | (378/346=1.09248)
| 85 | 546 | 1.63473 | (546/334=1.63473)
+-----+---------+---------------------+
Как мне выполнить такое отставание в MySQL?
Обратите внимание, что столбец id
содержит пробелы, поэтому простое соединение в одной таблице с t1.id = t2.id - 2
не сработает.