一:::分组:

首先:导入分组函数
from django.db.models import Sum,Count
# 查询 当前用户的分类归档       sum和count:之间的区别:sum是求出一个字段里面所有值加起来的和,而count是指每一字段各个数量.
def mysite(request,username):
  category_list=models.Category.objects.filter(article__userinfo__username=username).annotate(c=Count('article__id').values_list('name','c'))1,首先找到该用户的拥有的类别,2,然后通过分组查: (这里是按照前面类别分好组,然后后面求出每个组有多少个article_id),3,最后values_list取出类别的名字,和前面count出来的数量

#查询该时间下的文章数量:date_list=models.Article.objects.filter(userinfo__username=username).extra(select={'create_time':"strftime('%%Y-%%m',create_time)"}).values_list('create_time)'.annotate(Count('id')1,首先找到该用户下的文章,2,用extra格式化时间,拿到年-月的格式,3,再取时间结果,4,最后在时间下,分组查询该时间下的文章数量.

2,extra

extra(select=None, where=None, params=None,       tables=None, order_by=None, select_params=None)

有些情况下,Django的查询语法难以简单的表达复杂的 WHERE 子句,对于这种情况, Django 提供了 extra() QuerySet修改机制 — 它能在 QuerySet生成的SQL从句中注入新子句

extra可以指定一个或多个 参数,例如 selectwhere or tables. 这些参数都不是必须的,但是你至少要使用一个!要注意这些额外的方式对不同的数据库引擎可能存在移植性问题.(因为你在显式的书写SQL语句),除非万不得已,尽量避免这样做

参数之select

The select 参数可以让你在 SELECT 从句中添加其他字段信息,它应该是一个字典,存放着属性名到 SQL 从句的映射。

queryResult=models.Article           .objects.extra(select={'is_recent': "create_time > '2017-09-05'"})

结果集中每个 Entry 对象都有一个额外的属性is_recent, 它是一个布尔值,表示 Article对象的create_time 是否晚于2017-09-05.

练习:

# in sqlite:article_obj=models.Article.objects              .filter(nid=1)              .extra(select={"standard_time":"strftime('%%Y-%%m-%%d',create_time)"})              .values("standard_time","nid","title") print(article_obj) # <QuerySet [{'title': 'MongoDb 入门教程', 'standard_time': '2017-09-03', 'nid': 1}]>

参数之where / tables

您可以使用where定义显式SQL WHERE子句 - 也许执行非显式连接。您可以使用tables手动将表添加到SQL FROM子句。

wheretables都接受字符串列表。所有where参数均为“与”任何其他搜索条件。

举例来讲:

queryResult=models.Article           .objects.extra(where=['nid in (1,3) OR title like "py%" ','nid>2'])

 

转载于:https://www.cnblogs.com/52forjie/p/7886446.html

django-分组聚合查询相关推荐

  1. Django(part27)--聚合查询

    学习笔记,仅供参考 文章目录 数据库的操作(CRUD操作) 聚合查询 不分组聚合 分组聚合 数据库的操作(CRUD操作) 聚合查询 聚合查询是指对某个数据表中的某个字段的数据计算其统计量,比如,求出b ...

  2. mysql分组查询和子查询语句_6.MySQL分组聚合查询,子查询

    自己的MySQL阅读笔记,持续更新,直到看书结束. 数据库技术可以有效帮助一个组织或者企业科学.有效的管理数据,也是现在很多企业招聘数据分析师的必备要求之一. 大家如果看过MySQL的书,也可以看我的 ...

  3. 分组聚合查询两门以上MySQL_MySQL中的分组聚合查询

    下面根据之前的表来做一下示例.这里只给出SQL命令. #查询学生总人数 SELECT COUNT(*) FROM tb_student; #查询选修了课程的学生总人数 SELECT COUNT(DIS ...

  4. MongoDB多条件分组聚合查询

    MongoDB多条件分组聚合查询 1.样例数据 {"_id" : ObjectId("5fa13fb76c3107345a82c047"),"_cla ...

  5. php sequelize,Sequelize中用group by进行分组聚合查询

    一.SQL与Sequelize中的分组查询 1.1 SQL中的分组查询 SQL查询中,通GROUP BY语名实现分组查询.GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的 ...

  6. 聚合函数/分组聚合查询

    本博客前文链接,点击查看,便于理解代码的来龙去脉 聚合函数 MAX() MIN() COUNT() SUM() AVG() from stu.models import *def showsql(): ...

  7. 带你学MySQL系列 | 困扰MySQL初学者的分组聚合查询,我终于讲明白了!

    1.分组查询的原理图 对上述原始数据,按照DEPARTMENT_ID(员工id)分组统计SALARY(薪水)的平均值. 上述原理写成代码,应该怎么写呢? select department_id,av ...

  8. oracle分组聚合查询,Oracle中分组查询group by用法规则解析

    本篇文章小编给大家分享一下Oracle中分组查询group by用法规则解析,文章介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. Oracle中group by ...

  9. Solr分组聚合查询之Group

    摘要: Solr对结果的分组处理除了facet还可以使用group.Solr的group是根据某一字段对结果分组,将每一组内满足查询的结果按顺序返回. Group对比Facet Group和Facet ...

  10. Django丨聚合与分组查询

    多表实例 聚合查询 聚合查询函数时对一组值执行计算,并返回单个值 Django使用聚合查询前要先从django.db.models引用Avg.Max.Min.Count.Sum(首字母大写) from ...

最新文章

  1. PL/SQL ——分页编程
  2. jQuery针对多个元素的相同点击事件
  3. c语言均值滤波程序,10种简单的数字滤波算法(C语言源程序)
  4. python操作hive数据库代码_Python连接Hive操作数据库
  5. python用pip安装pygame_安装pygame和pip的问题以及过程
  6. C++基于TCP和UDP的socket通信
  7. Redis-与spring的集成(XML形式)
  8. Firefox和Chrome的选择
  9. mysql yacc 解析_yacc介绍
  10. 金蝶KIS专业版二次开发探索
  11. 升职加薪必看!java简历包装工作经验
  12. 解析出错,标准Json格式数据
  13. Quorum共识简析
  14. 使用switch常量c语言,c语言switch(c语言switch语句用法)
  15. 无密码解锁iPhone
  16. 计算机专业英语口语app,强烈推荐4款学英语必备的英语口语APP
  17. 选择java大数据开发方向学习,应该怎么规划学习路线
  18. Android App的国际化-各国语言缩写
  19. 云服务器之部署私人云盘
  20. 支付宝小程序获取用户信息及手机号

热门文章

  1. 【重识 HTML + CSS】元素类型、display、visibility、overflow
  2. 通过命令行安装或卸载Tomcat服务
  3. VNPY - 事件引擎
  4. 数据分析、python速成班?包就业?扒一扒数据行业黑幕
  5. 阿里架构师教你处理高并发:2种方法,解决Redis和Mysql一致性
  6. 不写代码不用Excel,如何制作高大上的财务分析?
  7. 查找 EXC_BAD_ACCESS 问题根源的方法
  8. flex AdvancedDataGrid 高级表格 介绍 教程
  9. 从GCN中学习的信息熵
  10. 基于tcp的协议需要设计数据校验码吗_C#与宇电温控表自定义协议通信实例