Tienes que usar subquerys, porque tanto cantom como precio entran dentro del GROUP BY y ocasionan que se muestre como hoy lo ves.
Código:
SELECT C.prodid, C.cantcomp, C.precio, C.fecha
FROM compras C
INNER JOIN (SELECT prodid, MAX(fecha) AS fecha FROM compras GROUP BY prodid) T
ON C.prodid = T.prodid
AND C.fecha = T.fecha
Aunque lo ideal es usar la llave de la tabla para hacer el join (usar la fecha se presta a errores cuando existan fechas iguales)