在做报表这种,我们经常会遇到各种各样的需求,按周统计就是一种。刚啊看到这个需求可能会一脸懵逼,不知如何下手。甚至有的人会利用最原始的方法,将客户所选日期拆分成N周,每一周都获取一下周一和周天时间,然后每周查询一次。这样的haul执行效率非常的低下,那有没有更好的方法实现啦,肯定是有的,这个时候我们就要了解一下数据库自带的函数。

SELECT EXTRACT(DOW FROM CURRENT_DATE);   执行结果如下。

这个SQL语句的意思就是计算当前日期是一周中的第几天。

EXTRACT(DOW FROM CURRENT_DATE) 函数的返回值,0表示星期天,6表示星期六。

因为外国人的习惯是一周从周日开始,二我们中国人的习惯一周的开始是星期一。

下面我们就来讲一下按周统计的思路,如果我们能够将表中的时间字段,都改造成对应时间的周一时间。那我们就可以实现。

示例。那我们只需要按这个日期分组统计就可以实现按周统计。

例如今天2019-01-11,是星期五,我么把他变成对应这周星期一的时间2018-01-07

同样2019-01-10,星期四,改成对应的周一时间2018-01-07。依次将所有日期改造,就可以实现按周统计

那么如何将日期字段,改造成对应周一时间就是一个问题。

以上我们通过 EXTRACT(DOW FROM CURRENT_DATE)可以知道当前时间对应在一周找那个的天数。如果我们能够用对应时间往前推他在一周的天数。例如今天2019-01-11号星期五,如果我们把时间往前推4天,我就可以得到对应这天周一的天数,首先我们需要改造一下EXTRACT(DOW FROM CURRENT_DATE)函数,以适应我们国人周一为一周的开始。

SELECT (EXTRACT(DOW FROM CURRENT_DATE)-1) diffday; 明显周一与周五之间相差4天。我们用当前日期往前推4天便得到星期一的日期

SELECT CURRENT_DATE-(EXTRACT(DOW FROM CURRENT_DATE)-1||'day')::interval diffday;

2019-01-07便是星期一的日器。下面我们一表为基础实现

一共6条数据,我们统计每周的数量

select
row_time::DATE-(extract(dow from row_time::TIMESTAMP)-1||'day')::interval monday,
count(*) amount
from acd_details
where 1=1
GROUP BY row_time::DATE-(extract(dow from row_time::TIMESTAMP)-1||'day')::interval

下面看一下上面语句的执行效果

显示的日期为每周周一的时间,总共六条数据,第一周(2018-12-31-2019-01-06) 3条

第二周(2019-01-07-2019-01-13) 2条,第三周(2019-01-14-2019-01-20) 1条。,至此大功告成。

postgresql中实现按周统计详解相关推荐

  1. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  2. python创建列向量_关于Numpy中的行向量和列向量详解

    关于Numpy中的行向量和列向量详解 行向量 方式1 import numpy as np b=np.array([1,2,3]).reshape((1,-1)) print(b,b.shape) 结 ...

  3. pandas dataframe数据聚合groupby、agg、privot基于sum统计详解及实例

    pandas dataframe数据聚合groupby.agg.privot基于sum统计详解及实例 知道了sum.那么min.max.mean.median都是举一反三的事情了. 在日常的数据分析中 ...

  4. vue在created调用点击方法_vue.js中created方法的使用详解

    这次给大家带来vue.js中created方法的使用详解,使用vue.js中created方法的注意事项有哪些,下面就是实战案例,一起来看一下. 这是它的一个生命周期钩子函数,就是一个vue实例被生成 ...

  5. Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件

    http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...

  6. linux在当前目录下创建pic目录,Linux中/proc目录下文件详解

    文章转自: Linux中/proc目录下文件详解(一) ------------------------------------------------------------------------ ...

  7. Linux中/proc目录下文件详解(zt)

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  8. linux只输入wc命令,Linux系统中wc命令的用法详解

    在Linux系统中,wc命令不太经常用到,只是在统计字数的时候才会使用该命令,那么下面由学习啦小编为大家整理了linux系统中wc命令的详细解释的相关知识,希望对大家有帮助! Linux系统中wc命令 ...

  9. SQL全方位攻略:5. SQL “方言”大比拼:Oracle、MySQL、PostgreSQL限制检索行数语法详解(分页查询)

    系列文章目录 SQL全方位攻略:1.数据库介绍 SQL全方位攻略:2.SQL介绍 SQL全方位攻略:3.SQL标准 SQL全方位攻略:4. 标准SQL和SQL"方言" 文章目录 系 ...

  10. jQuery中getJSON跨域原理详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp28 jQuery中getJSON跨域原理详解 前几天我再开发一个叫 河蟹工 ...

最新文章

  1. 数据绑定控件导出到excel
  2. 工业用微型计算机笔记(5)-指令系统(2)
  3. zigbee 协议栈数据类型及转换
  4. javascript中的模块系统
  5. qt中的qwidget如何实现自定义部件_2.3信号和槽(中)
  6. Skype通话调度功能提供给Android用户
  7. ionic day01教程第一天之多平台运行(ios android)
  8. 20210530:力扣第53场双周赛题解
  9. 快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)
  10. 【光学】基于matlab多缝夫琅禾费衍射【含Matlab源码 061期】
  11. 毕业论文每周报告进度计算机,计算机毕业论文进度安排怎么写
  12. 通达OA2013完美平台补丁以及手机短信服务配置
  13. 取之盈--别人轻松月薪过万,都是怎样高效学习的?
  14. 新世纪电影城热闹的三月 好片连连看 图
  15. x86服务器能装64位系统吗,x86处理器能装64位系统吗_64位系统装32位的可以么
  16. CTR广告点击率预估
  17. PERT(计划评审技术,Program Evaluation an Review Technique)
  18. ArcMap 镶嵌数据集基本使用方法
  19. pool win10提示bad_如何解决Win10系统出现bad pool header蓝屏现象?
  20. error: expected declaration or statement at end of input----solved

热门文章

  1. 开启Windows 10隐藏的电源卓越性能模式
  2. 微生物组-扩增子16S分析和可视化(2022.7本周开课)
  3. softice调试驱动程序
  4. 中国水墨风的小学学校网站模板
  5. 魏尔斯特拉斯---严谨的典范
  6. 小火狐进化_口袋妖怪xy 三主进化的详细解析说明
  7. 中职学校计算机课听课记录表,中职听课记录
  8. Scrapy+MongoDB+FastAPI搭建免费IP代理池接口
  9. 网络抖动、丢音、卡顿
  10. arch 关闭独显_Arch Linux Nvidia 双显卡切换