2014-09-12 186 views
0

我正在使用postgresql數據庫,因爲我想實現像我有兩個查詢,但我不想使用多個查詢,所以是否有可能通過單個查詢來管理?自定義postgresql的查詢

查詢1:

select coalesce(sum("dummy"),0) as sum from generate_series ('2014-09-09 00:00:00'::timestamp,'2014-09-09 23:59:59','1 minute') 
minutes(minute) LEFT JOIN report ON 
minutes.minute=date_trunc('minute', report.fetchdate) 
AND fetchdate >= '2014-09-09 00:00:00' AND fetchdate <= '2014-09-09 23:59:00' 
AND entity_id ='0' group by minute order by minute 

OUTPUT:虛擬字段的每一天的每一分鐘

總計數就意味着每天共有(24 * 60 = 1440)記錄

注:此查詢使用單日

查詢2:

select date(day)as day,coalesce(sum("dummy"),0) as sum from generate_series ('2014-09-06 00:00:01'::date,'2014-09-12 23:59:59'::date,'1 day'::interval) days(day) LEFT JOIN report ON days.day=date_trunc('day', report.fetchdate) AND entity_id ='0' group by day order by day 

OUTPUT:

give total count of dummy field for each day between day 2014-09-06 to 2014-09-12 it means total 7 records (Date : 6,7,8,9,10,11,12) 

注:此查詢使用超過1天

所需的輸出:

1)需要看到指定日期間的每一天的空場的總數(第二查詢的輸出)

2)需要看到每一天的最大呼叫

例如: 假設我在任何兩天的時間內搜索,那麼需要在單個日期中分解並獲取每個日期的每個分鐘的數據,並且每當我們有特定日期的虛擬字段的最大計數時,則需要顯示爲每天的輸出最大呼叫

+0

_需要查看每天的最大通話量_您的意思是最大「sum(」dummy「)'按分鐘分組? – 2014-09-12 13:25:12

+0

@Clodoaldo Neto你確定你是對的 – 2014-09-12 13:28:10

回答

0
select 
    date_trunc('day', minute) as day, 
    sum(minute_sum) as day_sum, 
    max(minute_sum) as max_minute_sum 
from (
    select 
     minute, 
     coalesce(sum("dummy"),0) as minute_sum 
    from 
     generate_series(
      '2014-09-06'::timestamp, 
      '2014-09-13'::timestamp - interval '1 minute', 
      '1 minute' 
     ) minutes(minute) 
     left join 
     report on 
      minutes.minute = date_trunc('minute', report.fetchdate) 
      and entity_id ='0' 
    group by minute 
) s 
group by 1 
order by 1 
+0

以上查詢它不顯示最後日期的總和最大日期我的意思是2014-09-13否則它的工作正常請幫助我,如果你可以 – 2014-09-13 07:50:14

+0

@Ankit:在你的樣本最後日期是2014-09-12因此我的查詢只顯示。如果您想包含13日,請將最後日期設置爲2014-09-14 – 2014-09-13 10:14:55