1. action(methods=['GET'], detail=False, url_path='count')
  2. def count(self, request):
  3. """统计最近30天的抓拍记录"""
  4.  
  5. starttime = request.query_params.get('starttime')
  6. endtime = request.query_params.get('endtime')
  7. days = datetime.timedelta(days=1)
  8.  
  9. start_date = datetime.datetime.strptime(starttime, '%Y%m%d%H%M%S').date()
  10. end_date = datetime.datetime.strptime(endtime, '%Y%m%d%H%M%S').date()
  11.  
  12. count_list = {
  13. 'dates': {
  14. 'start_date': start_date,
  15. 'end_date': end_date
  16. },
  17. 'result': []
  18. }
  19.  
  20. if end_date - start_date == days:
  21. result_list = models.DevicePhotoModel.objects.filter(take_photo_time__range=(start_date, end_date))\
  22. .extra(select={"take_photo_time": "to_char(take_photo_time, 'HH')"}).values('take_photo_time') \
  23. .annotate(count=Count('take_photo_time')).values('take_photo_time', 'count')
  24. # 统计当天的数据
  25. else:
  26. result_list = models.DevicePhotoModel.objects.filter(take_photo_time__range=(start_date, end_date)) \
  27. .extra(select={"take_photo_time": "to_char(take_photo_time, 'yyyy-mm-dd')"}).values('take_photo_time') \
  28. .annotate(count=Count('take_photo_time')).values('take_photo_time', 'count')
  29.  
  30. for result in result_list:
  31. count_list['result'].append({
  32. 'date': result['take_photo_time'],
  33. 'count': result['count']
  34. })
  35.  
  36. return Response(count

mysql和postgres数据库格式化方法不同。网上找了很多格式化案例,但是都会报错。mysql中用DATE_FORMAT格式化,postgresql中用TO_CHAR格式化,格式化参数也有些许差别

Django对postgresql数据库进行分组聚合查询的更多相关文章

  1. ubuntu 下搭建一个python3的虚拟环境(用于django配合postgresql数据库开发)

     #安装python pip  (在物理环境中安装) sudo apt-get install python-pip       sudo apt-get install python3-pipsud ...

  2. orm分组,聚合查询,执行原生sql语句

    from django.db.models import Avg from app01 import models annotate:(聚合查询) ret=models.Article.objects ...

  3. Solr分组聚合查询之Facet

    摘要: Solr的分组聚合是一个笼统的概念,目的就是把查询结果做分类,有多种方式可以做到很类似的结果.也正是由于它们的不同表现,可以适合于多种场景. 何为Facet Facet是一种手段,用来将搜索结 ...

  4. crm使用FetchXml分组聚合查询

    /* 创建者:菜刀居士的博客  * 创建日期:2014年07月09号  */ namespace Net.CRM.FetchXml {     using System;     using Micr ...

  5. ThinkPHP 数据库操作(四) : 聚合查询、时间查询、高级查询

    聚合查询 在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数.所有用户的最大积分.用户的平均成绩等等,ThinkPHP为这些统计操作提供了一系列的内置方法,包括: 用法示例: ...

  6. Solr分组聚合查询之Group

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

  7. SQL分组聚合查询练习(SQL Server和Oracle相似)20190514

    先建表 CREATE TABLE [dbo].[orderdt_jimmy]( ,) NOT NULL, [order_nid] [int] NOT NULL, ) NOT NULL, [qty] [ ...

  8. postgresql数据库利用函数返回查询结果集

  9. Python - Django - ORM 聚合查询和分组查询

    models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...

随机推荐

  1. OneDrive

    OneDrive https://onedrive.live.com

  2. 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)

    本人西电硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:无名小公司有时也很给力哦以下绝对是各大公 ...

  3. Carve Visual Studio2015编译

    下载Carve库  https://github.com/folded/carve 目录结构如下: 用Visual Studio2015打开,点击右键,生成即可 在bin目录下生成了   .lib文件 ...

  4. 一个小时学会Git(转载)

    ---恢复内容开始--- 一个小时学会Git     最近要与部门同事一起做技术分享,我选择了Git,因为Git 是一种在全球范围都广受欢迎的版本控制系统.在开发过程中,为了跟踪代码,文档,项目等信息 ...

  5. centOS 8 安装Hadoop

    1.安装环境 本教程使用 CentOS 8 64位 作为系统环境,请自行安装系统. 本教程基于原生 Hadoop 2,在 Hadoop 2.8.5 版本下验证通过,可适合任何 Hadoop 2.x.y ...

  6. LeetCode_101. Symmetric Tree

    101. Symmetric Tree Easy Given a binary tree, check whether it is a mirror of itself (ie, symmetric ...

  7. SQLite 的简单使用

    程序运行结果如下 : 输入name和age,点击"确认插入"按钮,即插入一条记录到数据库. 程序代码如下:(有详细注释,相信大家都看得懂哈!!!) ////  ViewContro ...

  8. 细说可空类型 nullable PropertyType

    可空类型是System.Nullable结构体的实列.一个可空类型代表了相应值类型的正确范围附加null值.这么说来,其实也不是很明子,命题嘛,一般不求易懂,但求准确. 那我就来说说这可空类型吧,上次 ...

  9. react Link标签 火狐失效怎么解决

    这个问题其实找了好多资料都没有具体的解决方法: 今天突然想到可能是层级嵌套出问题了,刚好有个bug也是关于这个的,已经亲测解决了 代码如下:火狐和谷歌都能正常的跳转 <Link to=" ...

  10. laravel-excel 表格 文档翻译笔记

    原文地址:https://blog.csdn.net/beyond__devil/article/details/78117471 1.安装 1>composer 安装 "maatwe ...