that was spot on Richard.  Thank you for your time and the solution.

On Wed, Oct 5, 2011 at 3:22 PM, Richard Huxton <d...@archonet.com> wrote:

> On 05/10/11 19:29, Henry Drexler wrote:
>
>>
>> and would like to have a column indicate like this:
>>
>> 'evaluation' 'indicator'
>> tf                     1
>> tt                     1
>> ft                      1
>> ff
>> ff
>> tf                      2
>> ft                      2
>> tf                      3
>> tt                      3
>> ft                      3
>> ff
>>
>
> SELECT id,evaluation,sum(case when evaluation='tf' then 1 else 0 end) over
> (order by id) FROM tfcount ORDER BY id;
>
> id | evaluation | sum
> ----+------------+-----
>  1 | tf         |   1
>  2 | tt         |   1
>  3 | ft         |   1
>  4 | ff         |   1
>  5 | ff         |   1
>  6 | tf         |   2
>  7 | ft         |   2
>  8 | tf         |   3
>  9 | tt         |   3
>  10 | ft         |   3
>  11 | ff         |   3
> (11 rows)
>
> OK, so that's almost it, but you'd like "ff" to be null. You probably can
> do it with a suitably nested CASE, but it's probably clearer as a sub-query.
>
> SELECT
>  id,
>  evaluation,
>  CASE WHEN evaluation='ff' THEN null::int
>  ELSE sum::int END AS section_num
> FROM (
>  SELECT
>    id,
>    evaluation,
>    sum(case when evaluation='tf' then 1 else 0 end) over (order by id)
>  FROM tfcount
> ) AS rows
> ORDER BY id;
>
> HTH
>
> P.S. - I always find the windowing function syntax confusing, but it's as
> the standards define I believe.
>
> --
>  Richard Huxton
>  Archonet Ltd
>

Reply via email to