django數據查詢之聚合查詢和分組查詢


 <1> aggregate(*args,**kwargs):

通過對QuerySet進行計算,返回一個聚合值的字典。aggregate()中每一個參數都指定一個包含在字典中的返回值。即在查詢集上生成聚合。

 1 from django.db.models import Avg,Min,Sum,Max
 2 
 3 從整個查詢集生成統計值。比如,你想要計算所有在售書的平均價錢。Django的查詢語法提供了一種方式描述所有
 4 圖書的集合。
 5 
 6 >>> Book.objects.all().aggregate(Avg('price'))
 7 {'price__avg': 34.35}
 8 
 9 aggregate()子句的參數描述了我們想要計算的聚合值,在這個例子中,是Book模型中price字段的平均值
10 
11 aggregate()是QuerySet 的一個終止子句,意思是說,它返回一個包含一些鍵值對的字典。鍵的名稱是聚合值的
12 標識符,值是計算出來的聚合值。鍵的名稱是按照字段和聚合函數的名稱自動生成出來的。如果你想要為聚合值指定
13 一個名稱,可以向聚合子句提供它:
14 >>> Book.objects.aggregate(average_price=Avg('price'))
15 {'average_price': 34.35}
16 
17 
18 如果你也想知道所有圖書價格的最大值和最小值,可以這樣查詢:
19 >>> Book.objects.aggregate(Avg('price'), Max('price'), Min('price'))
20 {'price__avg': 34.35, 'price__max': Decimal('81.20'), 'price__min': Decimal('12.99')}

 

<2> annotate(*args,**kwargs):

 可以通過計算查詢結果中每一個對象所關聯的對象集合,從而得出總計值(也可以是平均值或總和),即為查詢集的每一項生成聚合

 參考來源:https://www.cnblogs.com/liuwchao/articles/9831942.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM