Ultimo seis registros
Saludos a todos.
Tengo la siguiente tabla con dos columnas y cinco registros: columna1,columna2 ana,10 maria,15 jose, 11 jesus, 20 martin,30 Necesito sacar el promedio de los tres ultimos registros. Cual seria la instruccion en sql en firebird. Gracias por su atencikon... |
Algo como esto funcionaría
select sum(columna2) / 3 from tabla where id in (select first 3 id from tabla order by id descending) Como puedes ver he añadido una columna más, la columna 'id' para especificar la clave primaria. Con esa clave primaria puedes ordenar descendentemente para obtener los 3 últimos registros. Saludos. |
Hola sierraja, también puedes hacer algo como esto...
Lo de guillotmarc es una muy buena solución, no conocía el select first... Saludos!! |
Hola sierraja, sería bueno que tuvieras un campo al puedas ordenarlo de forma desencente como el id que te indica guillotmarc y obtener con first o rows la cantidad de registros que quieres y aplicarle AVG para el promedio, pero si solo tienes los dos campos que nos muestras lo que se me ocurre es que primero hagas una consulta para obtener la cantidad de registros de tu tabla, restarle la cantidad de los registros que quieres y utilizar skip en tu siguiente consulta.
Saluditos |
Cita:
Respecto al FIRST, es lo mismo que el ROWS, solo que se pone a continuación de SELECT y no al final de la consulta. De nuevo he utilizado el FIRST, porqué este funciona en todas las versiones de Firebird, mientras que el ROWS solo funciona en Firebird 2.0 para arriba. Finalmente, fijate @ricardojosep que @sierraja nos ha pedido los últimos tres registros, pero tu consulta hace la media de los tres primeros (y ya es mucho suponer que sean los tres primeros, puesto que si no le marcamos ninguna ordenación, el motor puede escoger el orden y los tres registros que primero le vengan a mano, y técnicamente seguirá siendo igual de correcto). Para especificar que queremos los tres últimos registros hay que poner forzosamente un order by, es decir, proporcionar un campo sobre el que se pueda especificar quienes van primeros y quienes últimos. Saludos. |
Hola guillotmarc, tiene razon con todo lo que has dicho, realmente me olvide de ordenar la consulta para obtener los ultimos 3 registros.
Siempre se aprende algo nuevo! Saludos!!! Ricardo. |
Saludos a todos.
Relamente la propuesta de guillotmarc me funciono al pelo y efectivamente los comentarios siguientes van directamente al grano y son aplicables en su totalidad. Pero la situacion fue solucionada con el aporte de guillotmarc. Gracias a todos,son un excelente equipo. |
La franja horaria es GMT +2. Ahora son las 21:24:37. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi