columns for count histograms of values

From: Alexy Khrabrov <deliverable(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: columns for count histograms of values
Date: 2008-04-30 21:01:13
Message-ID: 824FF9F9-9997-4AD9-9955-3CA658E150D4@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Greetings -- I have a table of the kind

Ratings:
id integer
rating smallint

-- where value can take any value in the range 1 to 5. Now I want to
have a statistical table Stats of the form

id integer
min smallint
max smallint
avg real
r1 integer
r2 integer
r3 integer
r4 integer
r5 integer

-- how can I create it in one pass over Ratings? I can use min(),
max(), avg() for

insert into stats values (id,select min(rating), max(rating),
avg(rating), ...) from ratings

-- but what to do for r1,..,r5, short of subselects (select
count(rating) from ratings where stats.id=ratings.id) for each, which
is an overkill?

Also, if a table Stats already exists with some more columns, and we
need to do an update, not insert, for the above, how would that work --

update stats set min=min(ratings), ... from ratings where
stats.id=ratings.id -- how do we do the histogram in this case, where
the id is fixed explicitly?

Cheers,
Alexy

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message chester c young 2008-04-30 23:12:12 Re: columns for count histograms of values
Previous Message Jean-David Beyer 2008-04-30 14:25:11 Re: Curious about wide tables.