sql - Laravel Eloquent limit() 和 count() 返回完整计数
问题描述
我需要对count()
最新的 1000 条记录使用该方法。
例如,我们有 3 个用户:
- 拥有 900 条记录的用户 A
- 拥有 20.000 条记录的用户 B
- 用户 C 有 10 条记录
现在我想只考虑最近的 1000 条记录进行计算,这意味着用户 A 和 C 将使用他们的所有记录,因为 < 1000,但用户 B 只使用他最近的 1000 条记录,而忽略了 19k。
// This should return for User A and C, 900 and 10, but for User C 1000
$recent_activities = Activity::select('id', 'user_id', 'activity')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();
// The next 3 queries should analyse the recent 1000 records for occurences of certain %like% records and count them
$result_chat_refunds = Activity::where('activity', 'like', 'Credits erstattet%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();
$result_credit_membership = Activity::where('activity', 'like', '%Membership gutgeschrieben%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();
$result_credit_credits = Activity::where('activity', 'like', '%Credits gutgeschrieben%')->where('user_id', $user->id)
->latest('id')->limit(1000)->count();
我怎样才能做到这一点?
解决方案
也许对此进行修改:
SELECT TOP 1000 X,
COUNT(X) OVER() AS Y
FROM TblZ
WHERE Criteria ='Whatever'
ORDER BY ID DESC
IDK我没有测试这个所以不要开枪。
推荐阅读
- laravel - Digital Ocean 返回“消息”:“没有与这些值匹配的路线”
- c# - .NET Core 中的 WCF XML WebMessageBodyStyle.Bare 等效项
- c# - 在保证无损的情况下,Swift 是否有任何隐式类型转换机制?
- python - Python。如何在数据框中创建一个新列,该列等于 2 个特定日期的天数?
- node.js - 如何将此响应更改为简单数组?
- git - Docker 使用经过身份验证的 git 调用
- r - 在 R(插入符号)中重新运行 preProcess()、predict() 和 train() 时模型精度不同
- serenity-bdd - 如何使用 Get.resource("path") REST API,将 Serenity Screenplay 与 HTTPS 验证作为 Actor
- javascript - Angular Material Autocomplete - 如何选择选项
- svelte - 为什么我不能在 svelte3 的脚本标签中访问“$:”又名反应变量?