Author: adrian
Date: 2012-01-13 13:57:30 -0800 (Fri, 13 Jan 2012)
New Revision: 17371

Modified:
   django/trunk/docs/topics/db/aggregation.txt
Log:
Started a 'Cheat sheet' section in aggregation docs because I desperately need 
this

Modified: django/trunk/docs/topics/db/aggregation.txt
===================================================================
--- django/trunk/docs/topics/db/aggregation.txt 2012-01-12 22:17:22 UTC (rev 
17370)
+++ django/trunk/docs/topics/db/aggregation.txt 2012-01-13 21:57:30 UTC (rev 
17371)
@@ -41,7 +41,43 @@
        name = models.CharField(max_length=300)
        books = models.ManyToManyField(Book)
 
+Cheat sheet
+===========
 
+In a hurry? Here's how to do common aggregate queries, assuming the models 
above::
+
+    # Total number of books.
+    >>> Book.objects.count()
+    2452
+
+    # Total number of books with publisher=BaloneyPress
+    >>> Book.objects.filter(publisher__name='BaloneyPress').count()
+    73
+
+    # Average price across all books.
+    >>> from django.db.models import Avg
+    >>> Book.objects.all().aggregate(Avg('price'))
+    {'price__avg': 34.35}
+
+    # Max price across all books.
+    >>> from django.db.models import Max
+    >>> Book.objects.all().aggregate(Max('price'))
+    {'price__max': Decimal('81.20')}
+
+    # Each publisher, each with a count of books as a "num_books" attribute.
+    >>> from django.db.models import Count
+    >>> pubs = Publisher.objects.annotate(num_books=Count('book'))
+    >>> pubs
+    [<Publisher BaloneyPress>, <Publisher SalamiPress>, ...]
+    >>> pubs[0].num_books
+    73
+
+    # The top 5 publishers, in order by number of books.
+    >>> from django.db.models import Count
+    >>> pubs = 
Publisher.objects.annotate(num_books=Count('book')).order_by('-num_books')[:5]
+    >>> pubs[0].num_books
+    1323
+
 Generating aggregates over a QuerySet
 =====================================
 

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to