Re: Counting different strings (OK%, FB%) in same table, grouped by week number

From: Michael Gould <mgould(at)isstrucksoftware(dot)net>
To: Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com>, Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Counting different strings (OK%, FB%) in same table, grouped by week number
Date: 2012-02-22 21:30:22
Message-ID: hl56rt2itpxwptqt0r3hrjv4.1329946222696@email.android.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Sent from Samsung mobile

Adrian Klaver <adrian(dot)klaver(at)gmail(dot)com> wrote:

>On 02/22/2012 12:36 PM, Alexander Farber wrote:
>> Hello,
>>
>> I have a table holding week numbers (as strings)
>> and user ids starting with OK, VK, FB, GG, MR, DE
>> (coming through diff. soc. networks to my site):
>>
>> afarber(at)www:~> psql
>> psql (8.4.9)
>> Type "help" for help.
>>
>> pref=> select * from pref_money;
>>
>> id | money | yw
>> -------------------------+--------+---------
>> OK19644992852 | 8 | 2010-44
>> OK21807961329 | 114 | 2010-44
>> FB1845091917 | 774 | 2010-44
>> OK172682607383 | -34 | 2010-44
>> VK14831014 | 14 | 2010-44
>> VK91770810 | 2368 | 2010-44
>> DE8341 | 795 | 2010-44
>> VK99736508 | 97 | 2010-44
>>
>> I'm trying to count those different users.
>>
>> For one type of users (here Facebook) it's easy:
>>
>>
>> pref=> select yw, count(*) from pref_money
>> where id like 'FB%' group by yw order by yw desc;
>>
>> yw | count
>> ---------+-------
>> 2012-08 | 32
>> 2012-07 | 32
>> 2012-06 | 37
>> 2012-05 | 46
>> 2012-04 | 41
>>
>> But if I want to have a table displaying all users
>> (a column for "FB%", a column for "OK%", etc.) -
>> then I either have to perform a lot of copy-paste and
>> vim-editing or maybe someone can give me an advice?
>>
>> I've reread the having-doc at
>> http://www.postgresql.org/docs/8.4/static/tutorial-agg.html
>> and still can't figure it out...
>
>How about?:
>
>test=> \d storage_test
> Table "public.storage_test"
> Column | Type | Modifiers
>---------+-----------------------+-----------
> fld_1 | character varying |
> fld_2 | character varying(10) |
> fld_3 | character(5) |
> fld_int | integer
>
>test=> SELECT * from storage_test ;
> fld_1 | fld_2 | fld_3 | fld_int
>-------+-------+-------+---------
> FB001 | one | | 4
> FB002 | three | | 10
> OK001 | three | | 5
> OK002 | two | | 6
> VK001 | one | | 9
> VK002 | four | | 2
>
>test=> SELECT substring(fld_1 from 1 for 2) as id_tag,fld_2, count(*)
>from storage_test group by substring(fld_1 from 1 for 2),fld_2;
> id_tag | fld_2 | count
>--------+-------+-------
> VK | four | 1
> VK | one | 1
> FB | one | 1
> FB | three | 1
> OK | two | 1
> OK | three | 1
>
>
>>
>> Thank you
>> Alex
>>
>
>
>
>--
>Adrian Klaver
>adrian(dot)klaver(at)gmail(dot)com
>
>--
>Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
>To make changes to your subscription:
>http://www.postgresql.org/mailpref/pgsql-general
>

Browse pgsql-general by date

  From Date Subject
Next Message Jens Wilke 2012-02-22 22:19:59 Re: Why warm-standby doesn't work using file-based log shipping method?
Previous Message David Johnston 2012-02-22 21:17:27 Re: Counting different strings (OK%, FB%) in same table, grouped by week number