Entiendo que quieres buscar las medias de precio de los productos incluidos en las 10 últimas ventas (pero la media de todas las ventas de cada uno de esos productos); entiendo, así mismo, que tienes una fecha de venta o un codventa (como ha sugerido huesos52) que es la que uso para controlar las 10 últimas ventas, y entiendo, finalmente, que en la columna precio incluyes el total de la venta y no el precio de cada producto:
Código sql:
Ver originalSELECT dcv.codpro, round((SUM(dcv.`precio_compra`)/SUM(dcv.cantidad)),2) AS promedio
FROM det_com_venta dcv INNER JOIN (
SELECT DISTINCT codpro
FROM det_com_venta
ORDER BY codventa DESC
LIMIT 10
)t1 ON t1.codpro = dcv.codpro
GROUP BY dcv.codpro
Y si quieres ver un producto (aunque no sabrás si está en las 10 últimas ventas hasta que hagas la consulta), por ejemplo, búsqueda de codpro=1.
Código sql:
Ver originalSELECT dcv.codpro, round((SUM(dcv.`precio_compra`)/SUM(dcv.cantidad)),2) AS promedio
FROM det_com_venta dcv INNER JOIN (
SELECT DISTINCT codpro
FROM det_com_venta
ORDER BY codventa DESC
LIMIT 10
)t1 ON t1.codpro = dcv.codpro WHERE dcv.codpro = 1
GROUP BY dcv.codpro