Thread: Migration from DB2 to PostgreSQL-ROLLUP()

Migration from DB2 to PostgreSQL-ROLLUP()

From
sachin kotwal
Date:
While migrating my application from DB2 to PostgreSQL.

I want to migrate ROLLUP() function in PostgreSQL.

Example:
  SELECT WEEK(SALES_DATE) AS WEEK,
         DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
         SUM(SALES) AS UNITS_SOLD
  FROM SALES
  GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) )
  ORDER BY WEEK, DAY_WEEK

This example shows two simple ROLLUP queries followed by a query which
treats the two ROLLUPs as grouping sets in a single result set and specifies
row ordering for each column involved in the grouping sets.

How can I migrate ROLLUP() function in PostgreSQL? or is there any similar
function in PostgreSQL which can done this job?



--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-ROLLUP-tp5759825.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


Re: Migration from DB2 to PostgreSQL-ROLLUP()

From
Pavel Stehule
Date:
Hello

2013/6/19 sachin kotwal <kotsachin@gmail.com>:
> While migrating my application from DB2 to PostgreSQL.
>
> I want to migrate ROLLUP() function in PostgreSQL.
>
> Example:
>   SELECT WEEK(SALES_DATE) AS WEEK,
>          DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
>          SUM(SALES) AS UNITS_SOLD
>   FROM SALES
>   GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) )
>   ORDER BY WEEK, DAY_WEEK
>
> This example shows two simple ROLLUP queries followed by a query which
> treats the two ROLLUPs as grouping sets in a single result set and specifies
> row ordering for each column involved in the grouping sets.
>
> How can I migrate ROLLUP() function in PostgreSQL? or is there any similar
> function in PostgreSQL which can done this job?

this functionality is not supported

you should to rewrite query

SELECT .. FROM GROUP BY weeks(sales_date), dayofweek(salesdate) UNION
ALL SELECT ... FROM .. GROUP BY dayofweek(salesdate) ORDER BY ..

Regards

Pavel Stehule

>
>
>
> --
> View this message in context:
http://postgresql.1045698.n5.nabble.com/Migration-from-DB2-to-PostgreSQL-ROLLUP-tp5759825.html
> Sent from the PostgreSQL - general mailing list archive at Nabble.com.
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general


Re: Migration from DB2 to PostgreSQL-ROLLUP()

From
Merlin Moncure
Date:
On Wed, Jun 19, 2013 at 3:56 AM, sachin kotwal <kotsachin@gmail.com> wrote:
> While migrating my application from DB2 to PostgreSQL.
>
> I want to migrate ROLLUP() function in PostgreSQL.
>
> Example:
>   SELECT WEEK(SALES_DATE) AS WEEK,
>          DAYOFWEEK(SALES_DATE) AS DAY_WEEK,
>          SUM(SALES) AS UNITS_SOLD
>   FROM SALES
>   GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) )
>   ORDER BY WEEK, DAY_WEEK
>
> This example shows two simple ROLLUP queries followed by a query which
> treats the two ROLLUPs as grouping sets in a single result set and specifies
> row ordering for each column involved in the grouping sets.
>
> How can I migrate ROLLUP() function in PostgreSQL? or is there any similar
> function in PostgreSQL which can done this job?

Yeah, we don't have it.   To work around the problem I typically
create a function or a view dynamically, that takes a template and
forces the rollup with a UNION ALL.   This technique is not generic,
so each case has to be handled specially.  Lack of OLAP style sql
features is #2 missing feature for me in postgres (after stored
procedures).

merlin