вся твоя логика подсчета среднего выглядит очень странно, я знаю как оптимизировать до одного запросы к БД и до односй строки кода, поработай пожалуйста над этим