From: | Julia Jacobson <julia(dot)jacobson(at)arcor(dot)de> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Cc: | Steve Litt <slitt(at)troubleshooters(dot)com> |
Subject: | Re: Crosstab query on huge amount of values |
Date: | 2011-01-17 12:21:11 |
Message-ID: | 4D343437.6050408@arcor.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Am 17.01.2011 00:20, schrieb Steve Litt:
> On Sunday 16 January 2011 17:40:34 Julia Jacobson wrote:
>> Hello everybody out there using PostgreSQL,
>>
>> A table with the results of students in different exams
>>
>> student | date_of_exam | grade
>> ------------------------------
>> Peter | 2010-09-09 | 2
>> Tom | 2010-09-09 | 1
>> Andy | 2010-09-21 | 3
>> Tom | 2010-09-21 | 4
>> Peter | 2010-09-21 | 1
>> Peter | 2010-10-11 | 2
>>
>> shall be transformed to a denormalized view like:
>>
>> student | grade_2010_09_09 | grade_2010_09_21 | grade_2010_10_11
>> ----------------------------------------------------------------
>> Peter | 2 | 1 | 2
>> Tom | 1 | 4 | NULL
>> Andy | NULL | 3 | NULL
>>
>> I've already done extensive Web-search and posted in Usenet for help
>> concerning this problem and was pointed to the tablefunc module which
>> seems to be a solution.
>> Since I only have a database but no administrative rights for the
>> PostgreSQL installation, I can't use the tablefunc module.
>> Is there any way to denormalize my table using a simple SQL script?
>>
>> Thanks in advance,
>> Julia
>
> Hi Julia,
>
> If you're denormalizing it just for a report, you could do it in your
> application, and just ringtoss rows onto the test periods.
>
> If you want to have a permanent table containing the denormalized material
> (and one would have to ask why), then one possible method would be the same as
> for the report -- let your application ring toss rows onto the newly created
> table containing an array. Since you have no administrative rights, the DBA
> would need to create the denormalized table, and add another column every time
> there's a new exam.
>
> Let the darn thing run overnight, or perhaps do one exam at a time or a small
> range of students at a time. Do you happen to know why they want a
> denormalized table as opposed to just making an index sorted by student and
> then by grade period? Do you have any idea how long it would take to create an
> index sorted first by student and then by exam?
>
> I'm sure there are easier ways of doing it, but what I suggested is one way
> that it could work.
>
> HTH
>
> SteveT
>
> Steve Litt
> Recession Relief Package
> http://www.recession-relief.US
> Twitter: http://www.twitter.com/stevelitt
Hello Steve,
Thanks a lot for your answer.
Indeed, I actually want to denormalize my table for a report, but I need
to join the denormalized table with another table of the database for
this report.
So when I ring toss rows and columns in my application, it won't be
possible to do the join anymore.
Although I think PostgreSQL does good in not offering pivot tables like
Oracle or MS-SQL, I'm really desperately looking for a workaround here.
Regards,
Julia
From | Date | Subject | |
---|---|---|---|
Next Message | Craig Ringer | 2011-01-17 13:25:34 | Re: PostgreSQL 9.0.2 hangs during shutdown on Windows (Win32) |
Previous Message | Alfredo Torres | 2011-01-17 10:54:36 | Re: [ANNOUNCE] Re: Para participantes extranjeros en el Tercer PGDay Latinoamericano. |