problema con un avg group by y limit
Hola gusto en saludarlos
Mi problema es el siguiente
Tengo una tabla detalle _ocumento
Id, Articulo, Valor, Cantidad, Fecha
Lo que necesito es sacar el valor promedio de cada articulo yo entiendo que se que puede hacer con
Código SQL:
Ver original
SELECT
avg(`VALOR`) AS `valor`,
articulo
FROM
detalle_documento
GROUP BY
articulos
el problema esta que la media la quiero obtener solo de los últimos 5 registros de cada articulo
cualquier cosa atento a sus preguntas
Gracias
¿Qué gestor de bases de datos usas? En MySQL tienes LIMIT para obtener sólo una cierta cantidad de datos, y puedes usar ORDER BY para ordenar antes por algún criterio (por ejemplo, la fecha, para que sean los últimos).
a media la quiero obtener solo de los últimos 5 registros de cada articulo
la media de los ultimos ingresos de articulo a
la media de los ultimos ingresos de articulo b
la media de los ultimos ingresos de articulo c
la media de los ultimos ingresos de articulo N
no los 5 articulos con su media total segun sus registros
espero me entienda
Se aceptan procedimientos o crear vistas , la idea de esto que esa consulta quede en una vista en mysql
= gracias por responder
Vale, creo que ahora sí lo entiendo.
Por una parte, te haría falta una subconsulta para obtener los 5 últimos datos de cada artículo, que supongo que sería algo como (suponiendo que hubiera algo como "fecha" que permitiera obtenerlos en orden);
select articulo, valor
from detalle_documento
where (
select count(*) from detalle_documento as d
where d.articulo = detalle_documento.articulo
and d.fecha <= detalle_documento.fecha
) <= 5;
Y luego eso iría dentro de la consulta global con el "group by":
select articulo, avg(valor)
from ( ... ) as subconsulta
group by articulo
Sin tener los CREATE TABLE y algun INSERT de prueba, no puedo comprobar que funciona, pero la lógica debería acercarse a eso.
Hermano eres un maestro del sql lo unico que cambie fue
d.fecha <= detalle_documento.fecha
d.id >= detalle_documento.id
de esta forma me aseguro que siempre seran los ultimos registros
ya que el id es autonumero
te pasastes muchas gracias ( se ve tan facil jajaja despues de la guerra son todos generales)
gracias
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)