我的查询(DB::raw(AVG('pt.progress')))
这部分目前正在抛出错误
$query = DB::table('projects as p')
->leftJoin('projects_tasks as pt','pt.project_id', 'p.id')
->select(
'p.id', 'p.project_name', DB::raw(AVG('pt.progress')) //this is where I need the average
);
$query->orderBy($order, $dir);
if ($limit != -1) {
$query->skip($start)->take($limit);
}
$records = $query->get();
表格结构:
projects:
========
id
project_name
...
...
projects_tasks:
===============
id
project_id,
parent, //0 or 1
progress //exmaple value 0.00 to 1.00
如何获得平均进度,其中parent_id = 0且project_id相同?
如果我创建一个函数并在循环中传递它,下面的查询确实可以工作,但是,我想优化它,并通过连接上面的查询来运行它。
$data_row = DB::table('projects_tasks')
->select(DB::raw('(SUM(progress)*100)/count(progress) as project_progress'))
->where(['project_id' => $project_id, 'parent' => 0])
->get();
1条答案
按热度按时间nfzehxib1#
您的查询似乎有语法错误,问题出在这里
DB::raw(AVG('pt.progress'))
。因为您使用的是原始查询,所以参数应该是一个字符串,所以必须用引号/双引号将其括起来。