LIMIT - это , а не , поддерживаемый JPQL. Ниже приведен пример кода с использованием Criteria-API.
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Double> criteriaQuery = builder.createQuery(Double.class);
Root<Product> productRoot = criteriaQuery.from(Product.class);
criteriaQuery.select(builder.avg(productRoot.get("price")));
criteriaQuery.orderBy(builder.desc(productRoot.get("price"));
Double average = (Double)entityManager.createQuery(criteriaQuery).setMaxResults(100).getSingleResult();
или
Double average = (Double)entityManager.createQuery("select avg(p.price) from Product p order by p.price").setMaxResults(100).getSingleResult();
Если это не сработает, нужно выполнить два запроса - выбрать однозначно упорядоченные записи и затем усреднить их.
В противном случае используйте собственный запрос, если переносимость не является проблемой, может выполнить то же самое с помощью одного запроса, так как многие СУБД поддерживают ограничение количества результатов, выбираемых из базы данных.