如何从最近 500 条记录中获取在线用户的总和?

Posted

技术标签:

【中文标题】如何从最近 500 条记录中获取在线用户的总和?【英文标题】:How do I get the sum of online users from the last 500 records? 【发布时间】:2021-01-28 08:44:16 【问题描述】:

我在 user_statistics 中有一个表。新记录不时出现在其中。我想从最后 500 条记录中获取一列的总和。我怎样才能实现它?

我试过了,还是不行:

    UserStatistics::select(DB::raw('SUM(rooms_online) as rooms_online'))
        ->orderBy('id', 'desc')
        ->take(User::count())
        ->get();

SQLSTATE[42000]:语法错误或访问冲突:1140 如果没有 GROUP BY 子句( SQL: select SUM(rooms_online) as rooms_onlinefrom user_statistics order by id desc limit 1)

当我添加groupBy时,我不会得到总和,而是将所有记录分开。

我可以获得如何操作的指导吗?

【问题讨论】:

我不使用 laravel,但我会尝试删除 take() 并添加 limit(500) 不幸的是,它没有帮助 如错误所示,您必须添加一个 groupBy() 运行 SHOW CREATE TABLE user_statistics 并将结果粘贴到您的问题中。另外,请发布您预期输出的插图。 【参考方案1】:

你可以takelatest 500 行:

$rooms_online=DB::table('user_statistics')->latest()->take(500)->sum('rooms_online');
  

【讨论】:

【参考方案2】:

如果只想查询最近500的总和,可以试试下面的代码。

UserStatistic::orderBy('id', 'desc')->limit(500)->sum('rooms_online');

【讨论】:

以上是关于如何从最近 500 条记录中获取在线用户的总和?的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose聚合从另一个集合中获取多条记录中的喜欢总和

MsSQL如何在一次查询中从给定的日期和仓库号获取最近的未来值和值的总和

如何从连接中的一组记录中获取列的总和?

如何在循环中使用 curl PHP 100 次? [关闭]

获取从 Laravel 4.1 中的模型返回的记录总和

如何使用教义/symfony4 从数据库中获取(连接)两条记录