日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part27)--聚合查询

發布時間:2023/12/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part27)--聚合查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

    • 數據庫的操作(CRUD操作)
      • 聚合查詢
        • 不分組聚合
        • 分組聚合



數據庫的操作(CRUD操作)


聚合查詢


聚合查詢是指對某個數據表中的某個字段的數據計算其統計量,比如,求出bookstore_book數據表中書的平均價格,查詢所有書的總個數等等等。


不分組聚合


不帶分組的聚合查詢是指導將全部數據進行集中統計查詢


  • 用法
from django.db.models import * Entry.objects.aggregate(結果變量名=聚合函數('列')) #聚合函數 #Sum, Avg, Count, Max, Min
  • 返回結果

結果變量名組成的字典,格式為:

{"結果變量名": 值}
  • 舉個例子

我們先看一下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)--聚合查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。