Ruby on rails 按天分组和总和不正确
我有一个密码:Ruby on rails 按天分组和总和不正确,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个密码: total_rate = company.crews .joins(:assignment) .where(assignments: { date: week[:from]..week[:to] }) .group_by_day('assignments.date', format: '%Y-%m-%d') .joins(
total_rate = company.crews
.joins(:assignment)
.where(assignments: { date: week[:from]..week[:to] })
.group_by_day('assignments.date', format: '%Y-%m-%d')
.joins(:workers)
.sum('workers.rate')
在产量方面,我们有两名工人,费率=4,5,应该是9。没错
如果在最后一行很容易进行.sum('workers.rate'),那么所有内容都会正常分组,并进行汇总。
输出是
{13:00=>9}9是worker.first.rate=4,worker.last=5
但是,在这里,当我尝试乘以一个条件更多的时间,结果是每个worker.reit都乘以时间差,
但你需要的是9*13:00的工人工资
.sum('workers.rate * (time_arriving - time_leaving)')
不是4*13.00+5*13.00
这就是问题所在…假设Postgres:
“time”-“time”将返回一个间隔,将其与整数相乘不会改变类型
您需要先提取小时数,然后将其乘以速率。
此查询显示如何获取小时数:
从作业中选择提取(从时间开始的历元-从时间开始的历元)/3600
请注意,
select extract(hour from time\u leave-time\u start)from assignments
将只提取完整的小时数,因此12:00-10:15
将返回“1”Ruby on Rails中没有groupby\u day
方法。你希望这个方法做什么?这个方法定义在哪里?你是自己写的还是使用了一个提供这种方法的gem?时间到达和时间离开是什么数据类型?是的,@Pascal t.time“time\u leaving”t.time“time\u reaming”