Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 6th, 2012  |  syntax: None  |  size: 0.66 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Find total number of customers having at least 5 orders (COUNT with JOIN, GROUP BY and HAVING)
  2. SELECT COUNT(*) FROM (
  3.  
  4.   SELECT c.id FROM customers as c
  5.   INNER JOIN orders as o ON c.id = o.customer_id
  6.   GROUP BY c.id
  7.   HAVING COUNT(o.id) >= 5
  8.  
  9. ) as temp
  10.        
  11. total_count = Customer.joins("INNER JOIN orders ON customers.id = orders.customer_id").group("customers.id").having("COUNT(orders.id) >= 5").count
  12.        
  13. SELECT COUNT(*) AS count_all, customers.id AS customers_id FROM `customers` INNER JOIN orders ON customers.id = orders.customer_id GROUP BY customers.id HAVING COUNT(orders.id) >= 5
  14.        
  15. SELECT * FROM orders
  16. GROUP BY customer_id
  17. HAVING COUNT(customer_id) >= 5