Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Help in writing SQL select Query (with prediction analysis)

User_CMFSZApr 2 2016 — edited Apr 3 2016

Hello All,

I need a help on writing a SQL query (Oracle 11 G) here is the details.

We have two tables. Please note I could not provide the Production table structures so sharing this dummy but similar table structures with dummy data

1. T_PRODUCT_SALES - which store product sales amount. Below is the structure and sample data

PRODUCT_ID

MONTH_DESC

SALES_AMOUNT

PRODUCT_SOLD_MONTH_YYYYMM

100

January-2016

10000

201601

200

January-2016

1000

201601

100

February-2016

20000

201602

200

February-2016

2000

201602

    DDL -- Create table

     CREATE TABLE T_PRODUCT_SALES_UNIT

       ( PRODUCT_ID                VARCHAR2(10), --'Product Id'

         MONTH_DESC                VARCHAR2(10), --'Month Name Month-YYYY (Character)'

         UNIT_SOLD_COUNT           VARCHAR2(10), --'Count of Units sold'

         PRODUCT_SOLD_MONTH_YYYYMM VARCHAR2(10) --'Numeric in the format YYYYMM'

       );

  Sample Insert script ---- Insert Script

     INSERT INTO T_PRODUCT_SALES (PRODUCT_ID, MONTH_DESC, SALES_AMOUNT, PRODUCT_SOLD_MONTH_YYYYMM)

       VALUES ('100', 'January-2016', '10000', '201601');

     INSERT INTO T_PRODUCT_SALES (PRODUCT_ID, MONTH_DESC, SALES_AMOUNT, PRODUCT_SOLD_MONTH_YYYYMM)

       VALUES ('200', 'January-2016', '1000', '201601');

     INSERT INTO T_PRODUCT_SALES (PRODUCT_ID, MONTH_DESC, SALES_AMOUNT, PRODUCT_SOLD_MONTH_YYYYMM)

       VALUES ('100', 'February-2016', '20000', '201602');

     INSERT INTO T_PRODUCT_SALES (PRODUCT_ID, MONTH_DESC, SALES_AMOUNT, PRODUCT_SOLD_MONTH_YYYYMM)

       VALUES ('200', 'February-2016', '2000', '201602');

     COMMIT;

  2. T_PRODUCT_SALES_UNIT - which store product sales quantity. Below is the structure and sample data

PRODUCT_ID

MONTH_DESC

UNIT_SOLD_COUNT

PRODUCT_SOLD_MONTH_YYYYMM

100

January-2016

100

201601

200

January-2016

10

201601

100

February-2016

200

201602

200

February-2016

20

201602

  DDL-- Create table

     CREATE TABLE T_PRODUCT_SALES_UNIT

       ( PRODUCT_ID                VARCHAR2(10), --'PRODUCT ID'

         MONTH_DESC                VARCHAR2(10), --'MONTH NAME MONTH-YYYY (CHARACTER)'

         UNIT_SOLD_COUNT           VARCHAR2(10), --'COUNT OF UNITS SOLD'

         PRODUCT_SOLD_MONTH_YYYYMM VARCHAR2(10--'NUMERIC IN THE FORMAT YYYYMM'

      );

  Sample Insert script -- Insert Script

    INSERT INTO T_PRODUCT_SALES_UNIT (PRODUCT_ID, MONTH_DESC, UNIT_SOLD_COUNT, PRODUCT_SOLD_MONTH_YYYYMM)

            VALUES ('100', 'January-2016', '100', '201601');

    INSERT INTO T_PRODUCT_SALES_UNIT (PRODUCT_ID, MONTH_DESC, UNIT_SOLD_COUNT, PRODUCT_SOLD_MONTH_YYYYMM)

            VALUES ('200', 'January-2016', '10', '201601');

    INSERT INTO T_PRODUCT_SALES_UNIT (PRODUCT_ID, MONTH_DESC, UNIT_SOLD_COUNT, PRODUCT_SOLD_MONTH_YYYYMM)

            VALUES ('100', 'February-2016', '200', '201602');

    INSERT INTO T_PRODUCT_SALES_UNIT (PRODUCT_ID, MONTH_DESC, UNIT_SOLD_COUNT, PRODUCT_SOLD_MONTH_YYYYMM)

            VALUES ('200', 'February-2016', '20', '201602');

    COMMIT;

Both the tables has a composite primary key (PRODUCT_ID ,PRODUCT_SOLD_MONTH_YYYYMM) and T_PRODUCT_SALES is the parent table where as T_PRODUCT_SALES_UNIT is the child table

Problem Statement -

Using the existing data ( we have only for Jan and Feb 2016) we have to prepare a Select query which will return results forecasting sales quantity and sales $ value for next 12 months ( i.e. from March 2016 to  Feb 2017). The formula for forecasting the Sales is as below

forecasted Sales ($)   =  Avg of previous two month's Sales value (Actual or forecasted)+ 10% growth

forecasted Sales Unit  = Avg of previous two month's Sales Unit (Actual or forecasted) + 10% growth

Below is the desired result

PRODUCT_ID

FORECASTED_MONTH_DESC

FORECASTED_SALES_$

FORECASETED_SALES_UNIT

FORCASETED_PERIOD_MONTH_YYYYMM

100

March-2016

15150

151.50

201603

200

March-2016

1515

15.15

201603

100

April-2016

1515

177.51

201604

200

April-2016

1515

17.75

201604

100

May-2016

1515

166.15

201605

200

May-2016

1515

16.61

201605

100

June-2016

1515

173.55

201606

200

June-2016

1515

17.35

201606

------

-------

-------

--------

----------

------

-------

-------

--------

----------

100

February-2017

-------

--------

201702

200

February-2017

-------

--------

201702

Thanks in advance for the help!


Thanks & Regards

SB.

This post has been answered by Frank Kulash on Apr 3 2016
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 1 2016
Added on Apr 2 2016
11 comments
2,310 views