zoukankan      html  css  js  c++  java
  • 74.Python中ORM聚合函数详解:Max,Min

    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 !")
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    IO 单个文件的多线程拷贝
    day30 进程 同步 异步 阻塞 非阻塞 并发 并行 创建进程 守护进程 僵尸进程与孤儿进程 互斥锁
    day31 进程间通讯,线程
    d29天 上传电影练习 UDP使用 ScketServer模块
    d28 scoket套接字 struct模块
    d27网络编程
    d24 反射,元类
    d23 多态,oop中常用的内置函数 类中常用内置函数
    d22 封装 property装饰器 接口 抽象类 鸭子类型
    d21天 继承
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12257672.html
Copyright © 2011-2022 走看看