[英]Divide database results in to 4 groups
(我在这里有一个Ruby / Rails / Postgres设置。)
我有成千上万个艺术家的桌子,每天我都会执行后台工作,以更新这些艺术家的各种外部资源。
每天一次执行所有操作会使这些外部API不堪重负,因此我想将该表分成4组,然后每天运行这些后台作业4次(即每6小时一次)。
如何将这些数据库结果分为4组?
最初,我只是要进行2组,然后根据“艺术家ID是否为偶数/奇数”进行查询,但不确定4组如何进行。
是否有某种数学方程式可以正确地将任何数字归入4组之一?
理想情况下,我会在查询本身中执行此操作( Artist.where("id % 2 = ?", "0")
),但是如果事后过滤结果数组更有意义,那也很好。
运行这些查询(每6小时运行一次)
Artist.where("id % 4 = ?", 0) #Run at 00:00
Artist.where("id % 4 = ?", 1) #Run at 06:00
Artist.where("id % 4 = ?", 2) #Run at 12:00
Artist.where("id % 4 = ?", 3) #Run at 18:00
您可以只计算总数,除以并使用偏移量和限制:
group_amount = Model.all.count/4
scope = Model.limit(group_amount)
first_group = scope
second_group = scope.offset(group_amount)
third_group = scope.offset(group_amount*2)
fourth_group = Model.offset(group_amount*3) #not using limit in case you have new record on that table
我不确定它是否满足您的所有需求,不知道您是否还有其他条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.