You are on page 1of 2

---- Create Product table

create column table "DBW3-SUBODH"."PRODUCT"(


"PRODUCT_ID" INTEGER,
"PRODUCT_NAME" VARCHAR (100),
primary key ("PRODUCT_ID")
);

SELECT * FROM "DBW3-SUBODH"."PRODUCT"

insert into "DBW3-SUBODH"."PRODUCT" values(1,'Shirts');


insert into "DBW3-SUBODH"."PRODUCT" values(2,'Jackets');
insert into "DBW3-SUBODH"."PRODUCT" values(3,'Trousers');
insert into "DBW3-SUBODH"."PRODUCT" values(4,'Coats');
insert into "DBW3-SUBODH"."PRODUCT" values(5,'Purse');

-- Create Region table


create column table "DBW3-SUBODH"."REGION"(
"REGION_ID" INTEGER,
"REGION_NAME" VARCHAR (100),
"SUB_REGION_NAME" VARCHAR (100),
PRIMARY KEY ("REGION_ID")
);

SELECT * FROM "DBW3-SUBODH"."REGION"

insert into "DBW3-SUBODH"."REGION" values(100,'Americas','North-America');


insert into "DBW3-SUBODH"."REGION" values(200,'Americas','South-America');
insert into "DBW3-SUBODH"."REGION" values(300,'Asia','India');
insert into "DBW3-SUBODH"."REGION" values(400,'Asia','Japan');
insert into "DBW3-SUBODH"."REGION" values(500,'Europe','Germany');

-- Create Sales table


create column table "DBW3-SUBODH"."SALES"(
"REGION_ID" INTEGER ,
"PRODUCT_ID" INTEGER ,
"SALES_AMOUNT" DOUBLE, PRIMARY KEY ("REGION_ID", "PRODUCT_ID") );

SELECT * FROM "DBW3-SUBODH"."SALES"

insert into "DBW3-SUBODH"."SALES" values(100,1,100);


insert into "DBW3-SUBODH"."SALES" values(100,2,90);
insert into "DBW3-SUBODH"."SALES" values(100,5,85);
insert into "DBW3-SUBODH"."SALES" values(200,2,80);
insert into "DBW3-SUBODH"."SALES" values(200,1,75);
insert into "DBW3-SUBODH"."SALES" values(300,3,85);
insert into "DBW3-SUBODH"."SALES" values(400,4,75);
insert into "DBW3-SUBODH"."SALES" values(500,1,65);
insert into "DBW3-SUBODH"."SALES" values(500,2,65);

CREATE TYPE "DBW3-SUBODH"."TT_SALES" AS TABLE (


SALES_AMOUNT DECIMAL,
NET_AMOUNT DECIMAL,
PRODUCT_NAME NVARCHAR(20),
REGION_NAME NVARCHAR(20),
SUB_REGION_NAME NVARCHAR(20)
);
CREATE PROCEDURE "DBW3-SUBODH"."PROCEDURE_SALES_REPORT"(
IN DISCOUNT INTEGER,
OUT OUTPUT_TABLE "DBW3-SUBODH"."TT_SALES" )
LANGUAGE SQLSCRIPT SQL SECURITY INVOKER AS
/*********BEGIN PROCEDURE SCRIPT ************/
BEGIN

var1 = SELECT T1.REGION_NAME, T1.SUB_REGION_NAME, T2.PRODUCT_ID, T2.SALES_AMOUNT


FROM "DBW3-SUBODH"."REGION" AS T1
INNER JOIN
"DBW3-SUBODH"."SALES" AS T2
ON T1.REGION_ID = T2.REGION_ID;

var2 = SELECT T1.REGION_NAME, T1.SUB_REGION_NAME, T1.PRODUCT_ID, T1.SALES_AMOUNT,


T2.PRODUCT_NAME
FROM :var1 AS T1
INNER JOIN
"DBW3-SUBODH"."PRODUCT" AS T2
ON T1.PRODUCT_ID = T2.PRODUCT_ID;

OUTPUT_TABLE = SELECT SUM(SALES_AMOUNT) AS SALES_AMOUNT, SUM( SALES_AMOUNT -


(SALES_AMOUNT * :DISCOUNT/ 100)) AS NET_AMOUNT,
PRODUCT_NAME, REGION_NAME, SUB_REGION_NAME
FROM :var2
GROUP BY PRODUCT_NAME, REGION_NAME, SUB_REGION_NAME;

END;

CALL "DBW3-SUBODH"."PROCEDURE_SALES_REPORT"(10,NULL);

You might also like