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

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

时间:2022-12-17 19:13:56浏览次数:37  
标签:聚合 name models res 查询 Book 分组 print

今日内容概要

聚合查询

常见的聚合函数

函数关键字 函数作用
Max 最大值
Min 最小值
Sum 求和
Count 统计
Avg 平均值

用法

#用之前需要导入
from django.db.models import Max,Min,Sum,count,Avg

#获取书中价格最高的
res = models.Book.objects.aggregate(Max('price'))
print(res)

res = models.Book.objects.aggreate(Max_price=Max('price')).get('max_prince')
'''还支持取别名 然后在get 如果不起别名 dango会自动起一个'''

#书的价格最低的
res = models.Book.objects.aggregate(Min('price'))
print(res)

#全部书的总价格
res = models.Book.objects.aggregate(Sum('price'))
print(res)

#统计书本的个数
res = models.Book.objects.aggregate(Count('pk'))
print(res)

#查询书本的平均价格
res = models.Book.objects.aggregate(Aug('price'))
print(res)

查询结果

img

分组查询

'''
如果执行ORM分组查询报错 并且有关键字sql_mode stric mode
	移除sql_mode 中的严格模式 only_full_group_by
'''
from django.db.models import Count, Sum, Max, Min, Aug
# 统计每本书的作者个数
'''
在Mysql中需要连表 然后在分组再统计作者个数
'''
1.先按照作者的表去分组(针对不同的要求 做不同的分组处理)
res = models.Book.objects.annotate(a_c=Count('authors_pk')).values('name','a_c')
print(res)
2.再按照表中字段分组
res = models.Book.objexcts.values('name').annotate(a_c=Count('authors_pk')).values('name','a_c')
print(res)

查询结果

img

新增字段

#针对已有数据之中还要插入字段必须给字段默认值 或者设置字段可为空

image

F与Q查询

F查询

from django.db.models import F
#查询库存大于卖出的书籍
'''
当条件不是明确的 也需要从数据库中获取 就可以使用F查询
'''
res = models.Book.object.filter(kucun_gt = F('maichu').values('name')
print(res)

#将书的价格都提高100
models.Book.objects.update(price = F('price') + 100)

#将所有书的名称后面追加新款
from dango.db.models.fybctions import Concat
from dango.db.models import Value
models.Book.object.update(name=Concat(F('name',Value('新款'))))
res = models.Book.objects.all().values('name')
print(res)

img

Q查询

# 查询主键是 1 且价格大于2000的书籍
'''
当条件与条件之间的关系 不是and 的时候就需要Q查询
'''
from django.db.models import Q
res = models.Book.object.filter(Q(pk=1),Q(price_gt=2000)).values('name')
print(res)
'''默认也是或关系'''

#查询主键是1 或者价格大于2000的书籍
res = models.Book.object.filter(Q(pk=1) | Q(prince_gt=2000).values('name'))
print(res)
'''|管道符为或符号'''

#查询主键不是1 或者价格大于2000的书籍
res = models.Book.object.filter(~Q(pk=1) | Q(price_gy=2000).values('name'))
print(res)
'''~是取反符号'''

标签:聚合,name,models,res,查询,Book,分组,print
From: https://www.cnblogs.com/xiaochenxiangchangpang/p/16989356.html

相关文章

  • python之路51 聚合查询 分组查询
    图书管理系统1.表设计先考虑普通字段再考虑外键字段数据库迁移、测试数据录入2.首页展示3.书籍展示4.书籍添加5.书籍编辑后端如何获取用户想要编辑的......
  • 图书管理系统、聚合查询、分组查询、F与Q查询
    图书管理系统讲解聚合查询分组查询F与Q查询图书管理系统讲解1.表设计 先考虑普通字段再考虑外键字段 数据库迁移、测试数据录入2.首页展示3.书籍展示4......
  • FAQ:说一说一条查询语句是如何执行的?
    一条SQL语句内部执行流程是怎样的?1select*fromuserwhereid=1;1.客户端发送SQL语句到服务器,先要通过连接器连接到数据库,在完成TCP握手之后,验证用户名和密码。......
  • 复赛和排名(分组排名)
     问题1:按不同科目进行排名函数公式解决:=SUM(1*IF(B$2:B$25=B2,C$2:C$25>=C2))此公式不受BC两列顺序的影响问题2:排名前30%的可以参加复赛函数公式解决:=IF(SUM(......
  • 使用匿名类型存储LINQ查询结果
    匿名类型的特性:1.既支持简单类型也支持复杂类型。简单类型必须是一个非空初始值,复杂类型则是一个以new开头的初始化项;2.匿名类型的属性是只读的,没有属性设置器,它......
  • 图书管理系统、聚合函数、分组查询、F与Q查询
    目录图书管理系统1.表设计2.首页搭建、展示书籍的添加书籍编辑书籍删除聚合函数MaxMinSumCountAvg分组查询按照表分组按照字段分组F与Q查询F查询Q查询逗号默认是and|是or~......
  • 数据库scn以及对应的时间查询
    文档课题:数据库scn以及对应的时间查询.--查某时间段scn号selectscn,to_char(time_dp+interval'8'hour,'yyyy-mm-ddhh24:mi:ss')fromsys.smon_scn_timewhereto_......
  • 多表查询练习
    --部门表CREATETABLEdept(idINTPRIMARYKEYPRIMARYKEY,--部门iddnameVARCHAR(50),--部门名称locVARCHAR(50)--部门所在地);--添加4个部......
  • 【MySQL】自动优化查询SQL语句
    一、参考资料​​XiaoMi/soar优化工具-web版本(mac)-简书​​​​​​​​​​ ​​GitHub-xiyangxixian/soar-web:AwebUIwithsoar​​​​EverSQL|AutomaticSQL......
  • 【MySQL】MySQL性能优化与查询优化
    一、参考资料​​MySQL数据库教程天花板,mysql安装到mysql高级,强!硬!_哔哩哔哩_bilibili​​​​《面试笔记》——MySQL终结篇(30问与答)​​​​最全MySQL优化方法,从此优化不......