django ORM框架 第四章 聚合函数

上一章:django ORM框架 第三章 关联表的数据创建与查询_做测试的喵酱的博客-CSDN博客

一、聚合函数类型:

from django.db.models import Q, Count, Avg, Max, Min

班级表:

学生信息表:

1.1 Count

模版:

QuerySet.aggregate(聚合函数("字段名"))

返回结果为一个字典 

举例: name中包含“红” 的学生数量

    x = Student.objects.filter(name__contains="红").aggregate(Count("id"))
    print(x)

x 的值为一个字典,{'id__count': 3}

注意:

1、计算结果为一个字典,key 是字段名__聚合函数名小写,如'id__count'

2、可以通过关键字参数形式,自定义返回字典中key。

如我要把key 改成 test , {'test': 3}。 test=Count("id")

    x = Student.objects.filter(name__contains="红").aggregate(test=Count("id"))

1.2 分组查询

格式:

父表名.objects.values('父表主键id').annotate(Count('从表模型类名小写名称'))

举例:

统计每个班级的学生数量。

 y = Class.objects.values('class_id').annotate(Count('student'))
 print(y)

y的值为 QuerySet ,但是QuerySet 中每一个元素,是一个字典。

<QuerySet [{'class_id': 1, 'student__count': 3}, {'class_id': 2, 'student__count': 2}, {'class_id': 3, 'student__count': 3}, {'class_id': 4, 'student__count': 5}]>

注意:

1、想要自定义 字典中的key,将  'student__count': 3 中的key 改成自定义的key如 miao:3

需要使用关键字方式 annotate(miao=Count('student'))

    y = Class.objects.values('class_id').annotate(miao=Count('student'))
    print(y)

y的值为:

<QuerySet [{'class_id': 1, 'miao': 3}, {'class_id': 2, 'miao': 2}, {'class_id': 3, 'miao': 3}, {'class_id': 4, 'miao': 5}]>

1.2 Avg  Max Min

与Count使用方法一致

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/22117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3 手工推导Neural Networ

线性模型假设的问题 如上图&#xff0c;对非线性类边界的数据进行分类 一个解决方案是将数据映射到更高维的空间&#xff0c;就变成线性可分的了。 ϕ \phi ϕ 是一个映射函数&#xff0c;将x从一个低维空间映射到高维空间。 ϕ \phi ϕ 可不可以是一个线性函数&#xff1f; …

音视频源码调试前准备vs2019+qt5.15.2搭建可调试环境

安装vs2019qt,并且在windows环境上安装ffmpeg&#xff0c;尝试使用qtcdb进行调试&#xff0c;尝试使用vs2019加载qt的程序。 安装VS20195.12.2qt环境&#xff0c;并进行测试。 1&#xff1a;安装Visual Studio 2019, a.从官网下载&#xff0c;或者vs2019社区版本下载地址 ht…

Cloud Studio 内核升级之触手可及

前言 Cloud Studio是基于浏览器的集成式开发环境&#xff08;IDE&#xff09;&#xff0c;为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装&#xff0c;随时随地打开浏览器就能使用。云端开发体验与本地几乎一样&#xff0c;上手门槛更低&#x…

前端axios fetch 解决接口请求响应数据返回快慢不均导致的数据错误问题

引言 搜索功能&#xff0c;我想很多业务都会涉及&#xff0c;这个功能的特点是&#xff1a; 用户可以在输入框中输入一个关键字&#xff0c;然后在一个列表中显示该关键字对应的数据&#xff1b;输入框是可以随时修改/删除全部或部分关键字的&#xff1b;如果是实时搜索&…

查看电脑的BIOS版本的五种方法

查看主板BIOS版本的五种方法 概述1. 在 BIOS 中查看2. 使用 DirectX 诊断工具3. 使用 CPU-Z 中查看4. 在 CMD 中查看&#xff08;一&#xff09;5. 在 CMD 中查看 &#xff08;二&#xff09;结束语 概述 BIOS是 Basic Input Output System 的缩略词&#xff0c;直译就是 **基…

【数据结构与算法】- 周测四

课程链接: 清华大学驭风计划 代码仓库&#xff1a;Victor94-king/MachineLearning: MachineLearning basic introduction (github.com) 驭风计划是由清华大学老师教授的&#xff0c;其分为四门课&#xff0c;包括: 机器学习(张敏教授) &#xff0c; 深度学习(胡晓林教授), 计算…

InnoDB数据页结构

什么是页&#xff1f;什么是数据页&#xff1f; 页是InnoDB管理存储空间的基本单元&#xff0c;一个页的大小一般是16k。 InnoDB有许多不同的页&#xff0c;有存放表空间头部信息的页&#xff0c;INODE信息的页&#xff0c;当然还有存放我们记录信息的页&#xff0c;这个页叫…

车载以太网 - SomeIP - 协议用例 - Messages_01

目录 Service Discovery Messages 1、验证Instance ID为0xFFFF时DUT需要返回该Serveice ID包含的所有Instance ID

「实验记录」MIT 6.824 Raft Lab2B Log Replication

#Lab2B - Log Replication I. SourceII. My CodeIII. MotivationIV. SolutionS1 - leader上任即初始化S2 - leader发送AppendEntriesS3 - follower接收AppendEntriesS4 - leader收到AppendEntries 回信S5 - candidate选举限制S6 - defs.go约定俗成和实现Start() V. Result I. S…

LeetCode 栈和队列OJ题目分享

目录 有效的括号&#xff08;括号匹配&#xff09;用栈实现队列用队列实现栈设计循环队列 有效的括号&#xff08;括号匹配&#xff09; 链接: link 题目描述&#xff1a; 题目思路&#xff1a; 1、如果是左括号“&#xff08; { [ ”就入栈 2、如果是右括号“&#xff09; }…

程序员:面试造火箭,入职拧螺丝?太难了···

刚开始工作的时候&#xff0c;我也想不通这个问题&#xff0c;甚至很鄙视这种现象。后面当了面试官&#xff0c;做到了公司中层管理&#xff0c;也会站在公司以及行业角度去重新思考这个问题。 为什么这种现象会越来越普遍呢&#xff1f;尤其在 IT 行业愈加明显。 面试看的是…

Packet Tracer – VLAN 实施故障排除场景 2

Packet Tracer – VLAN 实施故障排除场景 2 拓扑图 地址分配表 设备 接口 IPv4 地址 子网掩码 默认网关 S1 VLAN 56 192.168.56.11 255.255.255.0 不适用 S2 VLAN 56 192.168.56.12 255.255.255.0 不适用 S3 VLAN 56 192.168.56.13 255.255.255.0 不适用 P…

头歌计算机组成原理实验—运算器设计(11)第11关:MIPS运算器设计

第11关&#xff1a;MIPS运算器设计 实验目的 学生理解算术逻辑运算单元&#xff08;ALU&#xff09;的基本构成&#xff0c;掌握 Logisim 中各种运算组件的使用方法&#xff0c;熟悉多路选择器的使用&#xff0c;能利用前述实验完成的32位加法器、 Logisim 中的运算组件构造指…

图神经网络:(处理点云)PointNet++的实现

文章说明&#xff1a; 1)参考资料&#xff1a;PYG官方文档。超链。 2)博主水平不高&#xff0c;如有错误还望批评指正。 3)我在百度网盘上传了这篇文章的jupyter notebook和有关文献。超链。提取码8848。 文章目录 简单前置工作学习文献阅读PointNet的实现模型问题 简单前置工作…

智慧井盖监测终端,智能井盖-以科技解决智慧城市“顽疾”,守护城市生命线

平升电子智慧井盖监测终端,智能井盖-以科技解决智慧城市“顽疾”,守护城市生命线-智慧井盖&#xff0c;实现对井下设备和井盖状态的监测及预警&#xff0c;是各类智慧管网管理系统中不可或缺的重要设备&#xff0c;解决了井下监测环境潮湿易水淹、电力供应困难、通讯不畅等难题…

XDP入门--BPF程序如何转发报文到其它网卡

本文目录 1、测试环境&#xff1a;2、实现的功能&#xff0c;使用bpf_redirect直接转发收到的报文到另外一张网卡3、测试步骤与测试结果 1、测试环境&#xff1a; 参照把树莓派改造成无线网卡(3)-----共享无线网络&#xff0c;无线网络转换成有线网络&#xff0c;让有线网络设…

插入排序、选择排序、冒泡排序小结(45)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日主题 插入排序、选择排序、冒泡排序有什么区别&#xff1f; 原理不同 插入排序是将未排序的元素逐个插入到已排序序列中…

Unity之ASE从入门到精通 目录

前言 Amplify Shader Editor (ASE) 是受行业领先软件启发的基于节点着色器创建工具。它是一个开放且紧密集成的解决方案,提供了熟悉和连贯的开发环境,使 Unity 的 UI 约定和着色器的使用无缝地融合一起 目录 这里是ASE从入门到精通专栏的目录,不停更新中,有问题随时留…

入门JavaScript编程:上手实践四个常见操作和一个轮播图案例

部分数据来源&#xff1a;ChatGPT 简介 JavaScript是一门广泛应用于Web开发的脚本语言&#xff0c;它主要用于实现动态效果和客户端交互。下面我们将介绍几个例子&#xff0c;涵盖了JavaScript中一些常见的操作&#xff0c;包括&#xff1a;字符串、数组、对象、事件等。 例子…

rk3568 适配rk809音频

rk3568 适配rk809音频 RK809是一款集成了多种功能的电源管理芯片&#xff0c;主要用于笔记本电脑、平板电脑、工控机等设备的电源管理。以下是RK809的详细功能介绍&#xff1a; 电源管理&#xff1a;控制电源的开关、电压、电流等参数&#xff0c;保证设备的稳定运行。音频管…