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 !")
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    &nbsp|&quot|&amp|&lt|&gt等html字符转义
    OpenSSL: 消息摘要算法
    Linux下tcp协议socket的recv函数返回时机分析(粘包)
    ipv6
    Electron 调用系统工具记事本、计算器等
    MySQL 导出函数与存储过程
    远程连接Ubuntu桌面配置
    当Activity继承AppCompatActivity如何实现隐藏标题栏与状态栏
    spring boot 1.5.2 操作mongodb3.4.0
    VScode-Go can't load package: package .: no buildable Go source files in
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12257672.html
Copyright © 2011-2022 走看看