首页 > 其他分享 >聚合查询分组查询F与Q查询

聚合查询分组查询F与Q查询

时间:2022-12-16 18:55:23浏览次数:34  
标签:__ 聚合 models res price 查询 objects 分组

内容概要

  • 聚合查询
  • 分组查询
  • F与Q查询

内容详细

聚合查询

聚合函数:Max Min Sum Count Avg
在ORM中支持单独使用聚合函数 aggregate

from django.db.models import Max, Min, Sum, Count, Avg
res = models.Book.objects.aggregate(Max('price'), Count('pk'),最小价格=Min('price'), allPrice=Sum('price'),平均价格=Avg('price'))
print(res)

分组查询

"""
如果执行orm分组查询报错 并且有关键字sql_mode strict mode
	移除sql_mode中的only_full_group_by
"""
# 分组查询
    # 统计每一本书的作者个数
    # res = models.Book.objects.annotate(author_num=Count('authors__pk')).values('title', 'author_num')
    # print(res)
    # 统计出每个出版社卖的最便宜的书的价格
    # res = models.Publish.objects.annotate(min_price=Min('book__price')).values('name', 'min_price')
    # print(res)
    # 统计不止一个作者的图书
    # 1.先统计每本书的作者个数
    # res = models.Book.objects.annotate(author_num=Count('authors__pk'))
    # 2.筛选出作者个数大于1的数据
    # res = models.Book.objects.annotate(author_num=Count('authors__pk')).filter(author_num__gt=1).values('title',
    #                                                                                                     'author_num')
    # print(res)
    # 查询每个作者出的书的总价格
    # res = models.Author.objects.annotate(总价=Sum('book__price'),count_book=Count('book__pk')).values('name','总价','count_book')
    # print(res)
    """
    models.表名.objects.annotate()                            按照表分组
    models.表名.objects.values('字段名').annotate()            按照values括号内指定的字段分组
    """
    res = models.Book.objects.values('publish_id').annotate(count_pk=Count('pk')).values('publish_id', 'count_pk')
    print(res)

F与Q查询

# 1.查询库存数大于卖出数的书籍
'''当查询条件不是明确的 也需要从数据库中获取 就需要使用F查询'''
from django.db.models import F
# res = models.Book.objects.filter(kucun__gt=F('maichu'))
# print(res)
# 2.将所有书的价格涨800
# models.Book.objects.update(price=F('price') + 800)
# 3.将所有书的名称后面追加爆款
from django.db.models.functions import Concat
from django.db.models import Value
models.Book.objects.update(title=Concat(F('title'), Value('新款')))



# 查询主键是1或者价格大于2000的书籍
# res = models.Book.objects.filter(pk=1, price__gt=2000)  # 逗号默认是and关系
from django.db.models import Q
# res = models.Book.objects.filter(Q(pk=1), Q(price__gt=2000))  # 逗号是and
# res = models.Book.objects.filter(Q(pk=1) | Q(price__gt=2000))  # |是or
res = models.Book.objects.filter(~Q(pk=1) | Q(price__gt=2000))  # ~是not
print(res.query)

标签:__,聚合,models,res,price,查询,objects,分组
From: https://www.cnblogs.com/DragonY/p/16988097.html

相关文章

  • 自研ORM框架 实现类似EF Core Include 拆分查询 支持自定义条件、排序、选择
    Baozi,I'mMr.ZhongIliketobrushTikTok,Iknowthatanchorsliketocallitthat,haha!Recently,Ihaven'tbeensobusy,andittookalmostadaytoaddso......
  • LINQ 查询简介 (C#)
    查询是一种从数据源检索数据的表达式。查询通常用专门的查询语言来表示。随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的SQL和用于XML的......
  • 聚合 分组以及F与Q查询
    目录djangoday06一、图书馆里系统讲解二、聚合查询三、分组查询四、F与Q查询djangoday06一、图书馆里系统讲解1.表的设计2.首页展示3.书籍查询3.书籍添加3.书籍编辑......
  • 回表查询导致 select * 比select 具体字段快
     这里使用的是postgresql 联表查询select*0.008秒 快的不寻常   一样的条件 select主键略逊一筹如果加上其他字段差的更多了,差距大概在五倍左右......
  • 框架第七课---图书管理系统讲解,ORM 聚合查询,分组查询,F与Q查询
    昨日内容回顾ORM执行查询SQL语句1.raw() 查询关键字2.connection模块 fromdjango.dbimportconnection3.pymysql模块神奇的双下划线查询__gt 大于__lt ......
  • es查询
    es全表查询需求:根据关键字匹配某张表所有字段数据,进行并进行高亮显示。使用模糊查询解决思路:查询索引所有字段拼接查询条件解析查询条件遇到的问题:电话号码也要......
  • SqlServer 递归查询
    语法--查询字段列表格式为([查询字段名1],[查询字段名2],...),也可用*代替--需要注意的是此处的查询字段列表中的字段与下方内容中定点成员与递归成员查询字段列表内容......
  • unicloud 模糊查询
    constdb=uniCloud.database();constwork=db.collection('workIndex')constfood=db.collection('centerFoodList')//food.limit().get()//.doc.remove//......
  • 硬件IIC的7位从机地址查询方式读写参考代码
    目录本文中使用582测试,在整合先前博客中的代码的基础上,加上读写超时,加上返回值,加上16位从机寄存器地址的判断,希望读写各用一个函数就能解决硬件IIC的使用问题。#include......
  • 【SSM框架】MyBatis的各种查询功能
    1.查询一个实体类对象/**根据用户id查询用户信息@paramid@return*/UsergetUserById(@Param("id")intid);<selectid="getUserById"resultType="User">select*......