Re: GROUP BY hour

From: "Nathan Thatcher" <n8thatcher(at)gmail(dot)com>
To: "Steve Crawford" <scrawford(at)pinpointresearch(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: GROUP BY hour
Date: 2008-08-01 18:26:29
Message-ID: d9c17fb40808011126r936b2b2teb38e7e64a0a0247@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Brilliant!

On Fri, Aug 1, 2008 at 12:18 PM, Steve Crawford
<scrawford(at)pinpointresearch(dot)com> wrote:
> Nathan Thatcher wrote:
>>
>> I have, what I imagine to be, a fairly simple question. I have a query
>> that produces output for a line graph. Each row represents an interval
>> on the graph.
>>
>> SELECT COUNT(call_id) AS value, EXTRACT(hour from start_time) AS hour
>> FROM c_call WHERE start_time >= '2008-08-01 00:00:00' AND end_time <=
>> '2008-08-01 23:59:59' GROUP BY hour
>>
>>
>> This works great when there is data in each interval but when a given
>> interval has no data the group is omitted. What is the best way to
>> ensure that the result contains a row for each interval with the value
>> field set to zero or null? The reporting tool is incapable of filling
>> in the gaps.
>>
>> Thanks
>>
>>
>
> Use generate_series as part of your query. You can get a listing of all the
> hours, which can be integrated with your other data in a variety of ways,
> using:
>
> select '2008-08-01 00:00:00'::timestamp+generate_series(0,23)*'1
> hour'::interval as hour;
>
> hour
> ---------------------
> 2008-08-01 00:00:00
> 2008-08-01 01:00:00
> ...
> 2008-08-01 23:00:00
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2008-08-01 18:37:56 Re: savepoint problems
Previous Message Osvaldo Rosario Kussama 2008-08-01 18:23:19 Re: GROUP BY hour