aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZachary Scott <e@zzak.io>2014-06-01 13:54:56 -0700
committerZachary Scott <e@zzak.io>2014-06-01 13:54:56 -0700
commit22820f7bbe6dbd897a78ca281e41448d4e582cea (patch)
tree0d76865a72c5f86f23673c86b5ce1f08a60c96ed
parent02ee081cd645b51cbdfb28cd305777d3257ad871 (diff)
parent08855064cd1b98cf0c00f902de89a94d0564c459 (diff)
downloadrails-22820f7bbe6dbd897a78ca281e41448d4e582cea.tar.gz
rails-22820f7bbe6dbd897a78ca281e41448d4e582cea.tar.bz2
rails-22820f7bbe6dbd897a78ca281e41448d4e582cea.zip
Merge pull request #15459 from maurogeorge/add-total-grouped-items
Add Total of grouped items to Active Record query interface on guides [ci skip]
-rw-r--r--guides/source/active_record_querying.md34
1 files changed, 34 insertions, 0 deletions
diff --git a/guides/source/active_record_querying.md b/guides/source/active_record_querying.md
index ee8cf4ade6..b2d71d4be8 100644
--- a/guides/source/active_record_querying.md
+++ b/guides/source/active_record_querying.md
@@ -659,6 +659,40 @@ FROM orders
GROUP BY date(created_at)
```
+### Total of grouped items
+
+To get the total of grouped items on a single query call `count` after the `group`.
+
+```ruby
+Order.group(:status).count
+# => { 'awaiting_approval' => 7, 'paid' => 12 }
+```
+
+The SQL that would be executed would be something like this:
+
+```sql
+SELECT COUNT (*) AS count_all, status AS status
+FROM "orders"
+GROUP BY status
+```
+
+It is possible to do this count with multiple values, to do this only add the
+other column to `group`.
+
+```ruby
+Order.group(:status, :delivery_method).count
+# => { ['awaiting_approval', 'regular'] => 5, ['awaiting_approval', 'fast'] => 2, ['paid', 'regular'] => 2, ['paid', 'fast'] => 10 }
+```
+
+The SQL that would be executed would be something like this:
+
+```sql
+SELECT COUNT (*) AS count_all, status AS status,
+delivery_method AS delivery_method
+FROM "orders"
+GROUP BY status, delivery_method
+```
+
Having
------