Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/07/2011, 15:28
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Operacion con campo anterior de una columna

Hola emiajsiul:

Lamentablemente no estoy familiarizado con el tipo de consultas que te propuso el compañero gnzsoloyo, estos sólo los había visto aplicados en SQL Server, así es que me imagino que existe alguna forma de corregir para que te dé la salida que necesitas, pues creo que sería más eficiente que lo que voy a proponerte.

Por lo pronto, y retomando la idea de la liga que te pasé podrías hacerlo más o menos así:

Código SQL:
Ver original
  1. mysql> CREATE TABLE Vales (KM REAL, LITROS REAL);
  2. Query OK, 0 ROWS affected (0.23 sec)
  3.  
  4. mysql> INSERT INTO Vales VALUES (261253.000, 43.668), (261504.000,33.349),
  5.     -> (261911.000,43.668), (262245.000,35.388), (262522.000,37.575);
  6. Query OK, 5 ROWS affected (0.06 sec)
  7. Records: 5  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> SELECT * FROM Vales;
  10. +--------+--------+
  11. | KM     | LITROS |
  12. +--------+--------+
  13. | 261253 | 43.668 |
  14. | 261504 | 33.349 |
  15. | 261911 | 43.668 |
  16. | 262245 | 35.388 |
  17. | 262522 | 37.575 |
  18. +--------+--------+
  19. 5 ROWS IN SET (0.00 sec)
  20.  
  21. mysql> SELECT V3.UKM, V3.PKM, V2.LITROS, (V3.UKM - V3.PKM) RECORRIDO,
  22.     -> (V3.UKM - V3.PKM) / V2.LITROS CONSUMO
  23.     -> FROM vales V2 INNER JOIN
  24.     -> (SELECT
  25.     -> (SELECT MIN(KM) FROM vales WHERE KM > V1.KM) UKM, V1.KM PKM
  26.     -> FROM vales V1
  27.     -> ) V3 ON V3.UKM = V2.KM
  28.     -> ORDER BY 1 DESC;
  29. +--------+--------+--------+-----------+-------------------+
  30. | UKM    | PKM    | LITROS | RECORRIDO | CONSUMO           |
  31. +--------+--------+--------+-----------+-------------------+
  32. | 262522 | 262245 | 37.575 |       277 | 7.371922821024617 |
  33. | 262245 | 261911 | 35.388 |       334 | 9.438227647790212 |
  34. | 261911 | 261504 | 43.668 |       407 | 9.320326096913071 |
  35. | 261504 | 261253 | 33.349 |       251 | 7.526462562595581 |
  36. +--------+--------+--------+-----------+-------------------+
  37. 4 ROWS IN SET (0.06 sec)

Creo que la consulta puede mejorarse retomando la lógica de gnzsoloyo, pero mientras investigo un poco y obtengo alguna otra propuesta con esto alcanza.

Saludos
Leo.