Django(part27)--聚合查询
生活随笔
收集整理的這篇文章主要介紹了
Django(part27)--聚合查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考
文章目錄
- 數據庫的操作(CRUD操作)
- 聚合查詢
- 不分組聚合
- 分組聚合
數據庫的操作(CRUD操作)
聚合查詢
聚合查詢是指對某個數據表中的某個字段的數據計算其統計量,比如,求出bookstore_book數據表中書的平均價格,查詢所有書的總個數等等等。
不分組聚合
不帶分組的聚合查詢是指導將全部數據進行集中統計查詢。
- 用法
- 返回結果
由結果變量名和值組成的字典,格式為:
{"結果變量名": 值}- 舉個例子
我們先看一下bookstore_author數據表:
mysql> select * from bookstore_author; +----+--------+-----+----------------------+ | id | name | age | email | +----+--------+-----+----------------------+ | 1 | 山羊 | 19 | goatbishop@gamil.com | | 2 | 小黃 | 10 | 1033794241@qq.com | | 5 | 小黑 | 12 | xiaohei@gmail.com | | 6 | 小白 | 18 | xiaobai@gmail.com | | 7 | 山羊哥 | 27 | biggoat@gmail.com | +----+--------+-----+----------------------+ 5 rows in set (0.00 sec)在Django shell中敲入如下命令:
from bookstore import models from django.db.models import * result = models.Author.objects.aggregate(myAvg=Avg('age')) print("平均年齡是:", result['myAvg']) print("result=", result)得到結果:
平均年齡是: 17.2 result= {'myAvg': 17.2}分組聚合
分組聚合是指計算查詢結果中每一個對象所關聯的對象集合,從而得出總計值(也可以是平均值或總和),即查詢集的每一項生成聚合。
分組聚合的步驟:
- 首先,通過先用查詢結果Entry.object.values('列1', '列2') 查找到要分組聚合的列
- 再通過返回結果的 QuerySet.annotate(結果變量名=聚合函數('列')) 的方法分組聚合得到分組結果
- 舉個例子
我們在Django shell中敲入如下代碼:
from django.db.models import Count from . import models #得到所有出版社的查詢集合QuerySet pub_set = models.Book.objects.values('pub') #根據出版社查詢分組,出版社和Count的分組聚合查詢集合 pub_count_set = pub_set.annotate(myCount=Count('pub')) #返回查詢集合 for item in pub_count_set:print("出版社:", item['pub'], "圖書有:", item['myCount'])輸出結果:
出版社: 清華大學出版社 圖書有: 2 出版社: 機械工業出版社 圖書有: 1 出版社: 人民郵電出版社 圖書有: 2 出版社: 黑山羊出版社 圖書有: 1總結
以上是生活随笔為你收集整理的Django(part27)--聚合查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django(part26)--修改及删
- 下一篇: 用美图秀秀PS世界名画蒙娜丽莎--纯属娱