gpt4 book ai didi

php - 从 laravel 4 中的数据库获取平均值

转载 作者:行者123 更新时间:2023-11-29 02:25:27 25 4
gpt4 key购买 nike

我有两个表:工作计划和进度。这是工作计划表。

工作计划表:

编号

部门名称

师长

进度表:

编号

得分

workplan_id foreign_key

这里的workplan_id是workplan表的外键。

现在我想从按 division_name 分组的进度表中获取平均值。但我真的搞砸了我的查询。我做了什么:

  $report = DB::table('workplans')
->join('progress','workplans.id','=','progress.workplan_id')
->avg('progress.score')
->groupBy('workplans.division_name')
->get();

dd($report);

最佳答案

你想要的SQL是这样的...

SELECT workplans.division_name, AVG(progress.score) as average_score
FROM `workplans`
LEFT JOIN `progress` ON progress.workplan_id = workplans.id
GROUP BY workplans.id

使用 laravel 查询生成器...

$report = DB::table ('workplans')
->join ('progress', 'progress.workplan_id', '=', 'workplans.id')
->select ('workplans.division_name', DB::raw ('AVG(progress.score) as average_score'))
->groupBy ('workplans.id')
->get ();

因此对于得分为 5 和 15 的第 1 部分,得分为 15 和 25 的第 2 部分返回...

Array
(
[0] => stdClass Object
(
[division_name] => Division 1
[average_score] => 10
)

[1] => stdClass Object
(
[division_name] => Division 2
[average_score] => 20
)

)

您的查询的问题是 avg 聚合函数返回表中所有列的平均值,而不是对查询的引用,以便您可以继续链接其他函数。对此的解决方案是使用 DB::raw 方法使用 MySQL AVG 函数手动指定平均值。

关于php - 从 laravel 4 中的数据库获取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22966245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com