Я хочу получить идентификатор пользователя и его средний балл из каждой минимальной отметки времени для каждой категории.Вот структура таблицы
Таблица навыков
id | user_id | category | score | timestamp**
0....10............a................11........12
1....10............a................10........9
2....10............b................12........10
3....10............c................11........8
4....11............a................8........9
5....11............b................9........10
6....11............c................10........8
7....11............c................15........14
Я хочу получить такой результат:
user_id | AVG(score)
10........11 (average id: 1,2,3)
11........9 (average id: 4,5,6)
Пока я использую запрос зацикливания для каждого пользователя
foreach ($userIds as $id){
// in some case I need to get from only specified Ids not all of them
foreach ($category as $cat) {
// get the minimum timestamp's score for each category
$rawCategory = Skill::where("user_id", $id)->where("timestamp", "<=", $start)->where("category",$cat->id)->orderBy("timestamp", "desc")->first();
if($rawCategory){
$skillCategory[$cat->cat_name] = $rawCategory->score;
}
}
//get the average score
$average = array_sum($skillCategory) / count($skillCategory);
}
Я хочу создать лучший запрос Eloquent, чтобы получить такие данные с хорошей производительностью (<60 секунд).Кто-нибудь сталкивался с подобной проблемой и решил ее?Если да, пожалуйста, дайте мне ссылку.Спасибо </p>