Рассмотрим следующую таблицу:
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
не будет работать.