gpt4 book ai didi

php - 获取查询 LARAVEL 中前 N 个元素的平均值

转载 作者:行者123 更新时间:2023-12-04 03:09:43 25 4
gpt4 key购买 nike

我陷入了愚蠢的境地,但不知道该怎么做,每当我想获取列的平均值而不从数据库中检索所有数据时,我只需运行以下代码:

Result::where('test_id', $test->id)->avg('grade')

特定示例的答案是 37,现在当我想获取前 10 行时,我将运行此命令:

Result::select('grade')->where('test_id', $test->id)
->orderBy('grade', 'asc')->limit(10)->get();

这当然会给我前 10 行,如果我使用计算器并计算平均成绩,我将得到 33,但如果我运行以下命令,我:

Result::where('test_id', $test->id)->orderBy('grade','asc')->limit(10)->avg('grade');

我得到与总数据集相同的 37。我很确定这是一件愚蠢的事情,但我不知道它是什么。

最佳答案

我有点猜测,因为我现在还没有准备好测试这个,但我想的是,你正在使用 builder avg method ,它执行 SQL 聚合函数,并且 limit(10) 在聚合已经发生并且无论如何只有一行之后应用。

我认为如果您在获得有限结果后执行 avg,那么您将使用 collection avg method相反,并对查询返回的 10 行进行平均。

Result::where('test_id', $test->id)
->orderBy('grade','asc')->limit(10)->get()->avg('grade');

关于php - 获取查询 LARAVEL 中前 N 个元素的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46248408/

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