Re: Need some help with a query (uniq -c)

From: Scott Marlowe <scott(dot)marlowe(at)gmail(dot)com>
To: A B <gentosaker(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Need some help with a query (uniq -c)
Date: 2010-04-12 18:31:05
Message-ID: g2gdcc563d11004121131l59038899pf64e31ed0e9d548f@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Apr 12, 2010 at 12:22 PM, A B <gentosaker(at)gmail(dot)com> wrote:
> Hello!
>
> I have a table (think of it as a table of log messages)
>
> time |  message
> -----------------------
> 1      |   a
> 2      |   b
> 3      |   b
> 4      |  b
> 5      |  a
>
> the three 'b' are the same message, so I would like to write a query
> that would give me a result that is similar to what the unix command
> "uniq -c" would give:
>
> first |  message | last | count
> --------------------------------------
> 1     |     a              |   1   |     1
> 2     |     b              |   4   |     3     <--- here it squeezes
> similar consecutive messages into a single row
> 5     |     a              |   5   |     1
>
> How do I write such a command?

Pretty straight ahead:

select min(t), message, max(t), count(*) from table group by message.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Sergey Konoplev 2010-04-12 18:45:55 Re: Need some help with a query (uniq -c)
Previous Message Scott Mead 2010-04-12 18:30:29 Re: Lifekeeper