2017-09-22 23 views
0

我試圖做的是和過去30天的基於標準和團體的一天,一個代碼的一天是這樣的:求和移動範圍和標準,按天分組

select 
sum(case when f.hire_date__c between '2017-08-01 00:00:00' and '2017-09-01 
00:00:00' 
and t.createddate between '2017-08-01 00:00:00' and '2017-09-01 00:00:00' 
and t.name = 'Request' then 1 else 0 end) as Requests 
      from case_task_c as t 
      join case_file_c as f 
      on f.id = t.case_file__c 

我根據今天的日期等,可以根據30天的回顧調整相應的日期。我無法弄清楚的是每天都有這個查詢組,例如昨天的結果,前一天等等。範圍。

到目前爲止,我有這樣的:

select 
date(cast(f.hire_date__c as date)), 
row_number() over (order by f.hire_date__c desc) as rownumber, 
rr.Cancels as Cancels, 
qq.hires as hires, 
sum(rr.Cancels) over (rows between 1 following and 30 following) as 
CumulCancel, 
sum(qq.Hires) over (rows between 1 following and 30 following) as Hires 
from case_file_c as f 
    left join(
      select 
      cast(f.hire_date__c as date) as date1, 
      sum(case when 
      t.name = 'Cancellation Request' then 1 else 0 end) as Cancels 
      from case_task_c as t 
      join case_file_c as f 
      on f.id = t.case_file__c 
      group by date1) 
      as rr 
      on rr.date1 = cast(f.hire_date__c as date) 
    left join(
      select 
      cast(f.hire_date__c as date) as date2, 
      sum(case when f.hire_date__c is not null then 1 else 0 end) as 
      hires 
      from sf_case_file_c as f 
      group by date2) as qq 
      on qq.date2 = cast(f.hire_date__c as date) 
where f.hire_date__c is not null 
and f.hire_date__c >= '2017-01-01 00:00:00' 
and f.hire_date__c between date_add('day',-30,current_date) and current_date 
group by f.hire_date__c, rr.Cancels, qq.hires 
order by f.hire_date__c desc 

即使使用「CURRENT_DATE - 間隔 - 30日」只是仰望..當前日期。

使用Postgres 8.0.2

+0

你可以使用https://sqlfiddle.com轉換日期時間迄今在列選擇而不是在組做出了榜樣模式,並在你原來的問題聯繫起來呢? – phroureo

+0

使用'按日期分組(cast(f.hire_date__c as date)),rr.Cancels,qq.hires' – Rakib

回答

0

使用group by by following following。你被

GROUP BY date(cast(f.hire_date__c as date)),rr.Cancels, qq.hires