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条。,至此大功告成。
————————————————

原文链接:https://blog.csdn.net/weixin_42324471/article/details/86293504

postgresql中实现按周统计详解的更多相关文章

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

    转载于:http://blog.chinaunix.net/uid-10449864-id-2956854.html Linux中/proc目录下文件详解(一)/proc文件系统下的多种文件提供的系统 ...

  2. Linux中/proc目录下文件详解(转贴)

      转载:http://www.sudu.cn/info/index.php?op=article&id=302529   Linux中/proc目录下文件详解(一) 声明:可以自由转载本文, ...

  3. Delphi中的线程类 - TThread详解

    Delphi中的线程类 - TThread详解 2011年06月27日 星期一 20:28 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本 ...

  4. Nmap在实战中的高级用法(详解)

    @ 目录 Nmap在实战中的高级用法(详解) Nmap简单的扫描方式: 一.Nmap高级选项 1.查看本地路由与接口 2.指定网口与IP地址 3.定制探测包 二.Nmap扫描防火墙 1.SYN扫描 2 ...

  5. JQuery在循环中绑定事件的问题详解

    JQuery在循环中绑定事件的问题详解 有个页面上需要N个DOM,每个DOM里面的元素ID都要以数字结尾,比如说 ? 1 2 3 <input type="text" nam ...

  6. C#中的Linq to Xml详解

    这篇文章主要介绍了C#中的Linq to Xml详解,本文给出转换步骤以及大量实例,讲解了生成xml.查询并修改xml.监听xml事件.处理xml流等内容,需要的朋友可以参考下 一.生成Xml 为了能 ...

  7. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  8. C#中的预处理器指令详解

    这篇文章主要介绍了C#中的预处理器指令详解,本文讲解了#define 和 #undef.#if.#elif.#else和#endif.#warning和#error.#region和#endregio ...

  9. SVN中tag branch trunk用法详解

    SVN中tag branch trunk用法详解 2010-05-24 18:32 佚名 字号:T | T 本文向大家简单介绍一下SVN中tag branch trunk用法,SVN中tag bran ...

随机推荐

  1. Eclipse查看jdk源码(Ctrl+左键)

    Window ->Preferences ->Java ->Installed JREs ->选中jdk ->Edit ->选中rt.jar ->source ...

  2. 《剑指offer》面试题18 树的子结构 Java版

    (输入两棵二叉树A和B,判断B是不是A的子结构.补充下,根据书中的代码来看,子结构的定义并不包括叶子节点下的null,也就是说只要B的存在数字的结构存在于A中就行,那么如果B是null树,那么就不属于 ...

  3. [2019杭电多校第一场][hdu6579]Operation(线性基)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题目大意是两个操作,1个是求[l,r]区间子序列的最大异或和,另一个是在最后面添加一个数. 如果 ...

  4. Can you answer these queries? HDU 4027 线段树

    Can you answer these queries? HDU 4027 线段树 题意 是说有从1到编号的船,每个船都有自己战斗值,然后我方有一个秘密武器,可以使得从一段编号内的船的战斗值变为原来 ...

  5. HDU 5094 题解(状压BFS)

    题面: Maze 题目中文大意: 这个故事发生在“星际迷航”的背景下. “星际争霸”的副队长史波克落入克林贡的诡计中,被关押在他们的母亲星球Qo’noS上. 企业的上尉詹姆斯·T·柯克(James T ...

  6. 在eclipse上配置多个jdk

    在实际生产中,可能会遇到这样的问题:在eclipse中存在多个项目时,可能不同的项目需要不同的jdk版本.这时,我们就可以给eclipse配置多个jdk进行切换. 注:貌似只有较新版eclipse才能 ...

  7. oracle学习笔记(四) DML数据控制语言和TCL 事务控制语言

    DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...

  8. Nginx 的总结

    目录 Nginx 的产生 Nginx 的用武之地 Web 服务器对比 Nginx 的产生 Nginx 同 Apache 一样都是一种 Web 服务器.基于 REST 架构风格,以统一资源描述符(Uni ...

  9. MYSQL学习笔记——数据库范式及MYSQL优化整体思路

    一.数据库范式                                                                               为了建立冗余较小.结构合理的 ...

  10. 2014-03-01 春季PAT 1073-1076解题报告

    今天下午的PAT考试状态不理想,回来怒刷了一遍,解题报告如下: 1073. Scientific Notation (20) 基本模拟题,将一长串的科学计数转换为普通的数字表示方式.思路是是数组存储输 ...