Skip to content

Instantly share code, notes, and snippets.

@beck03076
Created June 4, 2014 20:03
Show Gist options
  • Select an option

  • Save beck03076/6f2b9eb7318b5b9af364 to your computer and use it in GitHub Desktop.

Select an option

Save beck03076/6f2b9eb7318b5b9af364 to your computer and use it in GitHub Desktop.
irb(main):173:0* def average_response_time(enquiries)
irb(main):174:1> enquiries_with_emails = enquiries.joins(:emails)
irb(main):175:1>
irb(main):176:1* total_response_time = enquiries_with_emails.inject(0) do |time, enquiry|
irb(main):177:2* first_response = enquiry.emails.order('created_at DESC').first
irb(main):178:2> time += first_response.created_at - enquiry.created_at
irb(main):179:2> end
irb(main):180:1>
irb(main):181:1* total_response_time / enquiries.count
irb(main):182:1> end
=> :average_response_time
irb(main):183:0> average_response_time(User.first.enquiries)
User Load (0.3ms) SELECT `users`.* FROM `users` LIMIT 1
Enquiry Load (0.5ms) SELECT `enquiries`.* FROM `enquiries` INNER JOIN `emails_enquiries` ON `emails_enquiries`.`enquiry_id` = `enquiries`.`id` INNER JOIN `emails` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `enquiries`.`assigned_to` = 5
Email Load (0.7ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 29 ORDER BY created_at DESC LIMIT 1
Email Load (0.6ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 29 ORDER BY created_at DESC LIMIT 1
Email Load (0.7ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.7ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.6ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 32 ORDER BY created_at DESC LIMIT 1
Email Load (0.6ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 32 ORDER BY created_at DESC LIMIT 1
Email Load (0.6ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 34 ORDER BY created_at DESC LIMIT 1
Email Load (0.6ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 34 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 36 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 36 ORDER BY created_at DESC LIMIT 1
Email Load (0.9ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 37 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 37 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 38 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 38 ORDER BY created_at DESC LIMIT 1
Email Load (1.0ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 40 ORDER BY created_at DESC LIMIT 1
Email Load (0.9ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 40 ORDER BY created_at DESC LIMIT 1
Email Load (0.9ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 42 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 42 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 45 ORDER BY created_at DESC LIMIT 1
Email Load (0.9ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 45 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 45 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (0.8ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
Email Load (1.3ms) SELECT DISTINCT `emails`.* FROM `emails` INNER JOIN `emails_enquiries` ON `emails`.`id` = `emails_enquiries`.`email_id` WHERE `emails_enquiries`.`enquiry_id` = 30 ORDER BY created_at DESC LIMIT 1
(0.3ms) SELECT COUNT(*) FROM `enquiries` WHERE `enquiries`.`assigned_to` = 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment