Django-分组查询-聚合函数-字段

本文详细介绍了Django中的分组查询和聚合函数,包括aggregate用于单独聚合查询,annotate用于组聚合查询,以及各种常用和不常用的字段属性、关系字段的处理,特别是如何处理断开外键和多对多关系的关联。
摘要由CSDN通过智能技术生成

一、分组查询概念
Book: id  name  price  publish_date  publish

1. 聚合函数可以单独使用: 将整张表作为一个大的分组,查询字段只能是聚合结果
select max(price), group_concat(name) from book where id < 10;

2. 聚合函数在分组下使用
select publish_id, max(price) as high_price from book group by publish_id having max(price) > 50
二、聚合查询
# 聚合函数的使用场景
	-- 单独使用:不分组,只查聚合结果
	-- 分组使用:按字段分组,可查分组字段与聚合结果

# 导入聚合函数
from django.db.models import Avg, Max, Min, Count, Sum
三、单独聚合查询:aggregate
# 语法:
aggregate(别名=聚合函数('字段'))

# 规则:
1.可以同时对多个字段进行聚合处理:aggregate(别名1=聚合函数1('字段1'), ..., 别名n=聚合函数n('字段n'))
3.是QuerySet对象方法
2.方法返回值返回值为dict类型

# 案例:所有书中最贵的书的价格
Book.objects.all().aggregate(high_price=Max('price'))
四、组聚合查询:annotate
# 语法:
values('分组字段').annotate(别名=聚合函数('字段')).filter(聚合字段别名条件).values('取分组字段', '取聚合字段别名')

# 规则:
1.values(..
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值