pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Andreas <maps.on@gmx.net>
To: pgsql-sql@postgresql.org
Subject: Howto get a group_number  like row_number for groups
Date: Thu, 08 Apr 2010 21:51:12 +0200
Message-ID: <4BBE33B0.1050408@gmx.net> (raw)

Hi

I'd like to have an alternating colorindex in the output of a query that 
consecutive rows that are the same within a colum the same number.
The query generates a readable output from a log-table and a few others 
that hold referenced texts.

log  (log_id  int, log_event_fk  int, object_fk  int , ts  timestamp)
events (event_id  int, event  text)
objects (object_id  int, object  text, is_active  bool)

the easy part   :)
mind the the ordering is not primarily based on the timestamp

select   log_id,  event,  object,  ts
from log
    join events  on event_id = log_event_fk
    join objects  on object_id = object_fk
where  object.is_active
order by  object,   ts

Now I'd need a dynamically generated column that alternates between 0 
and 1 so that I can later color the rows where object is the same.

row_number()  over  (order by  object,   ts)  %  2
or rank()  over  (order by  object,   ts)  %  2
produces the 0/1 alternation for rows

When I create a subselect for objects that adds the colorindex and join 
this to the log instead of objects, I get the group-color  only  if I 
omit the sorting on the timestamp.
When I order the outer select by object, ts  the colorindex gets 0 in 
every row.   :(

I'd like to get something as this
3,  up,  dev3,  2010-4-2  10:00,       0
8,  down,  dev3,  2010-4-2  14:00,       0
9,  down,  dev3,  2010-4-2  15:00,       0
1,  up,  dev7,  2010-4-2  09:00,       1
5,  down,  dev7,  2010-4-2  17:00,       1
2,  up,  dev11,  2010-4-2  12:00,       0
7,  down,  dev11,  2010-4-2  13:00,       0
.
.

regards   :)



view thread (3+ messages)  latest in thread

Message-ID: <4BBE33B0.1050408@gmx.net>
Permalink:  ../4BBE33B0.1050408@gmx.net/
Also on:    postgresql.org/message-id/4BBE33B0.1050408@gmx.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: maps.on@gmx.net
  Subject: Re: Howto get a group_number  like row_number for groups
  In-Reply-To: <4BBE33B0.1050408@gmx.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox