74.Python中ORM聚合函数详解:Max,Min
2024-09-04 06:00:34
Max和Min:获取指定对象的最大值和最小值。
1. 比如:想要获取Author表中的最大的年龄和最小的年龄。示例代码如下:
from django.http import HttpResponse
from .models import Author
from django.db.models import Max, Min
from django.db import connection
def index(request):
# Max和Min
result = Author.objects.aggregate(max_age=Max('age'),min_age=Min('age'))
print(result)
return HttpResponse("success !")
输出结果:
{'max_age': 57, 'min_age': 34}
同样可以打印出django底层使用的原生SQL语句:
print(connection.queries)
[{'sql': 'SELECT @@SQL_AUTO_IS_NULL', 'time': '0.000'},
{'sql': 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', 'time': '0.000'},
{'sql': 'SELECT MAX(`author`.`age`) AS `max_age`, MIN(`author`.`age`) AS `min_age` FROM `author`', 'time': '0.000'}]
2.比如:我们想要获取每一种图书预定时的最高价格和最低价格。示例代码如下:
from django.http import HttpResponse
from .models import Author,Publisher,Book,BookOrder
from django.db.models import Avg,Count,Sum, Max, Min
from django.db import connection
def index(request):
# 获取每一种图书预定价格的最高值和最低值
books = Book.objects.annotate(max_price=Max('bookorder__price'), min_price=Min('bookorder__price'))
for book in books:
print("%s,最高价格:%s,最低价格:%s" % (book.name,book.max_price, book.min_price))
# 打印出结果:
# 三国演义,最高价格:104.0,最低价格:99.0
# 水浒传,最高价格:115.0,最低价格:100.0
# 红楼梦,最高价格:105.0,最低价格:99.0
# 西游记,最高价格:None,最低价格:None
return HttpResponse("success !")
最新文章
- 【转载】PHP PSR-1 基本代码规范(中文版)
- 每天一点 js join 函数
- 关于UGUI Image Sliced模式的一个BUG。
- MS14-025引起的问题 - 1
- 2007 Asia - Nanjing F题,字典树
- Java 第四天 Mysql
- SQL Server 通配符 Wildcard character
- 用crontab、crond在嵌入式系统中添加定时任务
- Java 23种设计模式详尽分析与实例解析之一--创建型模式
- java工程师联通XX面试题目
- flex 实例 豆瓣手机端布局实现
- dom 及bom
- ES5-ES6-ES7_字符串与JOSN格式的数据相互转换以及深度克隆新对象
- ElasticSearch的插件(Plugins)介绍
- C#中关于as关键字的使用
- vue-cli+webpack在生成的项目中使用bootstrap方法(二)
- 【转】【WPF】WPF - MVVM - 如何将ComboBox的Selectchange事件binding到ViewModel
- kvm虚拟机的重命名
- java.lang.Object类
- HDU 4633 Who's Aunt Zhang ★(Polya定理 + 除法取模)