如何从最近 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 条记录中获取在线用户的总和?的主要内容,如果未能解决你的问题,请参考以下文章