【django】django的orm的分组查询

前言:django当中分组查询如何实现?   annotate

from myapp import models
from django.db.models.functions import TruncMonth
from django.db.models import Count,Avg




# 分组  values 就是取值作用
model.Book.objects.values('month').annotate(count=Count('id'))


# 等同于  select month,count(id) from book group by month;

model.Book.objects.values('month').annotate(count=Avg('price'))

# 等同于  select month,avg(price) from book group by month;



# 多表分组

model.A.objects.annotate(a=Avg('B__price')).values('a')

# 等同于select avg(B.price) as a from A join B on A.B_id =B.id group by A.id;

from myapp import models
from django.db.models.functions import TruncMonth
from django.db.models import Count




# 一个日期字段按月分组
 result = model.Book.objects.annotate(month=TruncMonth('date_field')).values('month').annotate(count=Count('id'))

看看这个博主不错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值