diff options
author | Zachary Scott <e@zzak.io> | 2014-06-01 13:54:56 -0700 |
---|---|---|
committer | Zachary Scott <e@zzak.io> | 2014-06-01 13:54:56 -0700 |
commit | 22820f7bbe6dbd897a78ca281e41448d4e582cea (patch) | |
tree | 0d76865a72c5f86f23673c86b5ce1f08a60c96ed /guides | |
parent | 02ee081cd645b51cbdfb28cd305777d3257ad871 (diff) | |
parent | 08855064cd1b98cf0c00f902de89a94d0564c459 (diff) | |
download | rails-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]
Diffstat (limited to 'guides')
-rw-r--r-- | guides/source/active_record_querying.md | 34 |
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 ------ |