我试图在谷歌和这里找到这个,但似乎我无法在这里找到一个体面的答案问题 我想要的是我需要得到从星期一到星期日每天显示的总hrs总和please check this image
我的模型就像这样
Error: EACCES, permission denied '/home/<USER>/.pm2'
和我的控制器
class Staff < ActiveRecord::Base
has_many :task_logs
end
class Client < ActiveRecord::Base
has_many :task_logs
end
class TaskLog < ActiveRecord::Base
belongs_to :staff
belongs_to :client
end
答案 0 :(得分:0)
理想情况下,我们会按TaskLog
Staff
.joins(:task_logs)
.group("GROUP BY to_char(task_logs.created_at, 'dy'), staffs.id")
.select("SUM(task_logs.total_hrs) AS sum_total_hrs, staffs.id AS staff_id, to_char(task_logs.created_at, 'dy') AS day_string")
上述查询的结果将是:(例如)
sum_total_hrs | staff_id | day_string
---------------+----------+-----------
50 | 1 | fri
45 | 1 | sat
20 | 2 | sat
从上面的结果中,您可以再次加入Staff
和其他表格以获取所需的所有列,例如:
temp_sql = Staff
.joins(task_logs)
.group("GROUP BY to_char(task_logs.created_at, 'dy'), staffs.id")
.select('SUM(task_logs.total_hrs) AS sum_total_hrs, staffs.id AS staff_id, to_char(task_logs.created_at, 'dy') AS day_string').to_sql
Staff.joins(task_logs: :client)
.joins("JOIN (#{temp_sql}) AS temp ON temp.staff_id = staffs.id")