PostgreSQL 按周、月、天 统计问题

PostgreSQL 实现按月按年,按日统计 分组统计:实质是把时间戳格式化成字符串,然后分组统计。

例如:

 select     
    to_char(create_time, 'YYYY-MM-DD') as d ,  
    count(id)  as  total_call
from  the_record_table   
--where  
--create_time between  '2010-01-01'   and    '2010-12-12'   
group by d  

http://javatophp.iteye.com/blog/768306

---------------------------------------------------------------------------------------------------------

按周统计:这个之能写程序拼sql了或者写存储过程。

愉快的找到7天分界点,http://www.jianshu.com/p/54e851518151

例如:

select 
    date_series.date, 
    extract (year from date_series.date) as year,
    extract (week from date_series.date) as week
from (
      select generate_series(
          timestamp '2016-03-07', 
          timestamp '2016-10-11',  '1 weeks') as date
) date_series

generate_series的时间递增包含:(前面的数字可以修改)

1 seconds
1 minutes
1 hours
1 days
1 weeks
1 months
1 years
generate_series还有不少用法

 

怎么拼呢,如下:

select 
     count(case when prevent_rank=1 and risk_rank>=2 
        and create_time>='2017-05-01 00:00:00' and create_time<'2017-05-08 00:00:00' then 'week1' end) "week0501-0508",
     count(case when prevent_rank=1 and risk_rank>=2 
        and create_time>='2017-05-01 00:00:00' and create_time<'2017-05-08 00:00:00' and drug_aspl=1 then 'week1' end) "week0501-0508_drug",
     sum(case when prevent_rank=1 and risk_rank>=2 
        and create_time>='2017-05-08 00:00:00' and create_time<'2017-05-15 00:00:00' then 1 else 0 end) "week0508-0515",
     sum(case when prevent_rank=1 and risk_rank>=2 
        and create_time>='2017-05-08 00:00:00' and create_time<'2017-05-15 00:00:00' and drug_aspl=1 then 1 else 0 end) "week0508-0515_drug",
from record_table 
 

 

转载于:https://my.oschina.net/jrrx/blog/1377721

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值