Considérese la siguiente tabla:¿Cómo puedo retrasar las columnas en MySQL?
SELECT id, value FROM table ORDER BY id ASC;
+-----+---------+
| id | value |
+-----+---------+
| 12 | 158 |
| 15 | 346 |
| 27 | 334 |
| 84 | 378 |
| 85 | 546 |
+-----+---------+
La columna id
es auto-incrementales pero contiene huecos. La columna value
es numérica.
Quiero mirar por el aumento de value
lo largo del tiempo mediante el establecimiento de value
en relación con los value
dos filas anteriores. Eso es para la fila id=85
Quiero establecer el value
de la fila id=85
(546) en relación con el value
de la fila id=27
(334). El valor que se calculará para la fila id=85
es 546/334 = 1.63473.
Este es el resultado que quiero lograr:
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)
+-----+---------+---------------------+
¿Cómo realizo tal retraso en MySQL?
Tenga en cuenta que la columna id
contiene huecos, por lo que simplemente unir en la misma tabla con t1.id = t2.id - 2
no funcionará.
Hay una función de retraso() en el estándar SQL, pero MySQL no soporta esto. –