SQL Assignment 1st Phase (Chapter
1-4)
///////////////////CREATING
CUSTOMER_DIM TABLE////////////////////////////////////
CREATE TABLE customer_dim
( customer_sk INT NOT NULL PRIMARY KEY,
customer_number NUMBER(3)
customer_name CHAR (50),
customer_street_address CHAR (50),
customer_zip_code NUMBER (5),
customer_city CHAR (30),
customer_state CHAR (2),
effective_date DATE,
expiry_date DATE );
///////////////////CREATING PRODUCT_DIM TABLE//////////////////////////////////////
CREATE TABLE product_dim
( product_sk INT NOT NULL PRIMARY KEY,
product_code NUMBER,
product_name CHAR (30),
product_category CHAR (30),
effective_date DATE,
expiry_date DATE );
//////////////////////CREATING ORDER_DIM TABLE/////////////////////////////////////
CREATE TABLE order_dim
( order_sk INT NOT NULL PRIMARY KEY,
order_number INT,
effective_date DATE,
expiry_date DATE );
////////////////////////////CREATING DATE_DIM TABLE////////////////////////////////
CREATE TABLE date_dim
( date_sk INT NOT NULL PRIMARY KEY,
Booking_date DATE,
month_name CHAR (9),
month NUMBER (2),
quarter NUMBER (1),
year NUMBER (4),
effective_date DATE,
expiry_date DATE );
///////////////////////////CREATING SALES_ORDER_FACT TABLE/////////////////////////
CREATE TABLE sales_order_fact
( order_sk NUMBER,
customer_sk NUMBER,
product_sk NUMBER,
order_date_sk NUMBER,
order_amount DECIMAL (10, 2));
/////////////////////////////CUSTOMER_DIM///////////////////////////////////////
DROP SEQUENCE auto_incr;
CREATE SEQUENCE auto_incr
START WITH 1
INCREMENT BY 1
CACHE 100;
INSERT INTO customer_dim VALUES(auto_incr.nextval, 1,'Big Customers','7500 Louise Dr.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 2,'Small Stores','2500 Woodland St.','17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 3,'Medium Retailers','1111 Ritter Rd.','17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 4,'Good Companies','9500 Scott St.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 5,'Wonderful Shops','3333 Rossmoyne Rd.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 6, 'Loyal Clients', '7070 Ritter Rd.', '17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
//////////////////////////////////CHAPTER:2 CUSTOMER_DIM////////////////////////////////////
UPDATE customer_dim SET customer_name='Really Large Customers' WHERE customer_number=1;
INSERT INTO customer_dim VALUES(auto_incr.nextval,7,'Distinguished Partners','9999 Scott St.','17050','Mechanicsburg','PA',CURRENT_DATE+1,to_date('9999-12-31','YYYY-MM-DD'));
/////////////////////////////////////PRODUCT_DIM////////////////////////////////////
DROP SEQUENCE pro_auto;
CREATE SEQUENCE pro_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO product_dim VALUES(pro_auto.nextval,1,'Hard Disk','Storage',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,2,'Floppy Drive','Storage',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,3,'LCD Panel','Monitor',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,1,'Hard Disk','Storage',current_date+2,current_date+3);
/////////////////////////////////////Chapter 3////////////////////////////////////////////////////
///////////////////////////////////////ORDER_DIM///////////////////////////////////////////////////
DROP SEQUENCE order_auto;
CREATE SEQUENCE order_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO order_dim VALUES (order_auto.nextval, 1, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 2, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 3, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 4, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 5, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 6, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 7, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 8, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 9, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 10,CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
///////////////////////////////////////DATE_DIM/////////////////////////////////////////////////////////
DROP SEQUENCE date_auto;
CREATE SEQUENCE date_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO date_dim VALUES (date_auto.nextval, to_date('2007-02-05','YYYY-MM-DD'), 'February', 02, 01, 2007, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
/////////////////////////////////////////////////SALES_ORDER_FACT///////////////////////////////////////////////////
INSERT INTO sales_order_fact VALUES (1, 1, 2, 1, 1000);
INSERT INTO sales_order_fact VALUES (2, 2, 3, 1, 1000);
INSERT INTO sales_order_fact VALUES (3, 3, 4, 1, 4000);
INSERT INTO sales_order_fact VALUES (4, 4, 2, 1, 4000);
INSERT INTO sales_order_fact VALUES (5, 5, 3, 1, 6000);
INSERT INTO sales_order_fact VALUES (6, 1, 4, 1, 6000);
INSERT INTO sales_order_fact VALUES (7, 2, 2, 1, 8000);
INSERT INTO sales_order_fact VALUES (8, 3, 3, 1, 8000);
INSERT INTO sales_order_fact VALUES (9, 4, 4, 1, 10000);
INSERT INTO sales_order_fact VALUES (10, 5, 2, 1, 10000);
///////////////////////////////////////////////////////////////////////////
CHAPTER 3
///////////////////////////////////////////////////////////////////////////
SQL> select * from sales_order_fact;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
///////////////////////////////////////////////////////////////////////////
SQL> select sum(order_amount) total_amount from sales_order_fact;
TOTAL_AMOUNT
------------
253000
///////////////////////////////////////////////////////////////////////////
SQL> select avg(order_amount) average_amount from sales_order_fact;
AVERAGE_AMOUNT
--------------
15812.5
///////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT * FROM CUSTOMER_DIM;
CUSTOMER_SK CUSTOMER_NUMBER CUSTOMER_NAME CUSTOMER_STREET_ADDRESS CUSTOMER_ZIP_CODE
----------- --------------- -------------------------------------------------- ---------------------
CUSTOMER_CITY CU EFFECTIVE EXPIRY_DA
------------------------------ -- --------- ---------
1 1 Really Large Customers 7500 Louise Dr. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
2 2 Small Stores 2500 Woodland St. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
3 3 Medium Retailers 1111 Ritter Rd. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
4 4 Good Companies 9500 Scott St. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
5 5 Wonderful Shops 3333 Rossmoyne Rd. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
6 6 Loyal Clients 7070 Ritter Rd. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
7 7 Distinguished Partners 9999 Scott St. 17050
Mechanicsburg PA 31-AUG-13 31-DEC-99
7 rows selected.
SQL> SELECT CUSTOMER_NUMBER,
2 SUM(ORDER_AMOUNT) TOTAL_SUM_ORDER_AMOUNT FROM
3 SALES_ORDER_FACT A,CUSTOMER_DIM B WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK
5 GROUP BY CUSTOMER_NUMBER;
CUSTOMER_NUMBER TOTAL_SUM_ORDER_AMOUNT
--------------- ----------------------
1 72000
2 34000
4 49000
5 56000
3 42000
////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT CUSTOMER_NUMBER,
2 SUM(ORDER_AMOUNT) TOTAL_SUM_ORDER_AMOUNT FROM
3 SALES_ORDER_FACT A,CUSTOMER_DIM B WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK AND CUSTOMER_NUMBER=1
5 GROUP BY CUSTOMER_NUMBER;
CUSTOMER_NUMBER TOTAL_SUM_ORDER_AMOUNT
--------------- ----------------------
1 72000
//////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM PRODUCT_DIM;
PRODUCT_SK PRODUCT_CODE PRODUCT_NAME PRODUCT_CATEGORY EFFECTIVE EXPIRY_DA
---------- ------------ ------------------------------ ------------------------------ --------- ----
1 1 Hard Disk Storage 01-SEP-13 31-DEC-99
2 2 Floppy Drive Storage 01-SEP-13 31-DEC-99
3 3 LCD Panel Monitor 01-SEP-13 31-DEC-99
4 1 Hard Disk Storage 01-SEP-13 02-SEP-13
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT PRODUCT_NAME,
2 SUM(ORDER_AMOUNT) TOTAL_AMOUNT_PRODUCT FROM
3 SALES_ORDER_FACT A, PRODUCT_DIM B WHERE
4 A.PRODUCT_SK=B.PRODUCT_SK
5 GROUP BY PRODUCT_NAME;
PRODUCT_NAME TOTAL_AMOUNT_PRODUCT
------------------------------ --------------------
Floppy Drive 78000
Hard Disk 95000
LCD Panel 80000
/////////////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT TABLE_NAME FROM USER_TABLES;
TABLE_NAME
------------------------------
CUSTOMER_DIM
PRODUCT_DIM
ORDER_DIM
DATE_DIM
SALES_ORDER_FACT
CUSTOMER_DIM_COPY
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
COUNTRIES
EMPLOYEES
JOB_HISTORY
13 rows selected.
SQL> SELECT * FROM DATE_DIM
2 ;
DATE_SK BOOKING_D MONTH_NAM MONTH QUARTER YEAR EFFECTIVE EXPIRY_DA
---------- --------- --------- ---------- ---------- ---------- --------- ---------
1 05-FEB-07 February 2 1 2007 30-AUG-13 31-DEC-99
2 06-FEB-07 February 2 1 2007 30-AUG-13 31-DEC-99
SQL> SELECT CUSTOMER_NUMBER,PRODUCT_CODE,
2 SUM(ORDER_AMOUNT) SUM_OF_ORDER_AMOUNT
3 FROM SALES_ORDER_FACT A, CUSTOMER_DIM B, PRODUCT_DIM C WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK AND A.PRODUCT_SK=C.PRODUCT_SK
5 GROUP BY CUSTOMER_NUMBER,PRODUCT_CODE;
CUSTOMER_NUMBER PRODUCT_CODE SUM_OF_ORDER_AMOUNT
--------------- ------------ -------------------
4 1 10000
5 2 10000
2 3 26000
1 2 21000
3 1 34000
4 2 39000
1 1 51000
2 2 8000
3 3 8000
5 3 46000
10 rows selected.
///////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT BOOKING_DATE,
2 SUM (ORDER_AMOUNT),
3 COUNT (*)
4 FROM SALES_ORDER_FACT A,
5 DATE_DIM B
6 WHERE
7 A.ORDER_DATE_SK=B.DATE_SK
8 GROUP BY BOOKING_DATE
9 ORDER BY BOOKING_DATE;
BOOKING_D SUM(ORDER_AMOUNT) COUNT(*)
--------- ----------------- ----------
05-FEB-07 58000 10
06-FEB-07 195000 6
///////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT YEAR, PRODUCT_NAME, CUSTOMER_CITY,
2 SUM (ORDER_AMOUNT),
3 COUNT (*)
4 FROM
5 SALES_ORDER_FACT A,
6 DATE_DIM B,
7 PRODUCT_DIM C,
8 CUSTOMER_DIM D
9 WHERE
10 A.ORDER_DATE_SK=B.DATE_SK
11 AND A.PRODUCT_SK=C.PRODUCT_SK
12 AND A.CUSTOMER_SK=D.CUSTOMER_SK
13 GROUP BY YEAR,PRODUCT_NAME, CUSTOMER_CITY
14 ORDER BY YEAR,PRODUCT_NAME, CUSTOMER_CITY;
YEAR PRODUCT_NAME CUSTOMER_CITY
---------- ------------------------------ ------------------------------
SUM(ORDER_AMOUNT) COUNT(*)
----------------- ----------
2007 Floppy Drive Mechanicsburg
70000 5
2007 Floppy Drive Pittsburgh
8000 1
2007 Hard Disk Mechanicsburg
61000 3
YEAR PRODUCT_NAME CUSTOMER_CITY
---------- ------------------------------ ------------------------------
SUM(ORDER_AMOUNT) COUNT(*)
----------------- ----------
2007 Hard Disk Pittsburgh
34000 2
2007 LCD Panel Mechanicsburg
46000 2
2007 LCD Panel Pittsburgh
34000 3
6 rows selected.
////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT
2 PRODUCT_NAME
3 ,MONTH_NAME
4 ,YEAR
5 ,SUM (ORDER_AMOUNT)
6 ,COUNT(*)
7 FROM
8 SALES_ORDER_FACT A
9 ,PRODUCT_DIM B
10 ,DATE_DIM C
11 WHERE
12 A.PRODUCT_SK = B.PRODUCT_SK
13 AND A.ORDER_DATE_SK = C.DATE_SK
14 GROUP BY
15 PRODUCT_NAME
16 ,PRODUCT_CATEGORY
17 ,MONTH_NAME
18 ,YEAR
19 HAVING PRODUCT_CATEGORY = 'STORAGE'
20 ORDER BY
21 YEAR
22 ,MONTH_NAME;
PRODUCT_NAME MONTH_NAM YEAR SUM(ORDER_AMOUNT) COUNT(*)
------------------------------ --------- ---------- ----------------- ----------
Floppy Drive February 2007 78000 6
Hard Disk February 2007 95000 5
/////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT
2 CUSTOMER_CITY,
3 QUARTER,
4 YEAR,
5 SUM(ORDER_AMOUNT),
6 COUNT(ORDER_SK)
7 FROM
8 SALES_ORDER_FACT A,
9 CUSTOMER_DIM B
10 ,DATE_DIM C
11 WHERE
12 A.CUSTOMER_SK=B.CUSTOMER_SK
13 AND A.ORDER_DATE_SK=C.DATE_SK
14 GROUP BY
15 CUSTOMER_CITY,
16 QUARTER,
17 YEAR
18 HAVING CUSTOMER_CITY = 'Mechanicsburg'
19 ORDER BY
20 YEAR,
21 QUARTER;
CUSTOMER_CITY QUARTER YEAR SUM(ORDER_AMOUNT)
------------------------------ ---------- ---------- -----------------
COUNT(ORDER_SK)
---------------
Mechanicsburg 1 2007 177000
10
////////////////////////////////////////////////////////////////////////////////////////////////////
SQL> ED
Wrote file afiedt.buf
1 SELECT
2 MONTH_NAME,YEAR,
3 PRODUCT_NAME,
4 SUM(ORDER_AMOUNT)
5 ,COUNT(*)
6 FROM
7 SALES_ORDER_FACT A,
8 PRODUCT_DIM B,
9 DATE_DIM C
10 WHERE
11 A.PRODUCT_SK=B.PRODUCT_SK
12 AND A.ORDER_DATE_SK=C.DATE_SK
13 GROUP BY
14 MONTH_NAME,
15 YEAR, PRODUCT_NAME
16 HAVING SUM (ORDER_AMOUNT) >= 75000
17 ORDER BY
18 MONTH_NAME,
19 YEAR,
20* PRODUCT_NAME
21 ;
MONTH_NAM YEAR PRODUCT_NAME SUM(ORDER_AMOUNT) COUNT(*)
--------- ---------- ------------------------------ ----------------- ----------
February 2007 Floppy Drive 78000 6
February 2007 Hard Disk 95000 5
February 2007 LCD Panel 80000 5
////////////////////////////////////////////////////////////////////////////////////////////////////////
SQL> ED
Wrote file afiedt.buf
1 SELECT
2 CUSTOMER_NUMBER,
3 YEAR, COUNT (*)
4 FROM
5 SALES_ORDER_FACT A,
6 CUSTOMER_DIM B,
7 DATE_DIM C
8 WHERE
9 A.CUSTOMER_SK=B.CUSTOMER_SK
10 AND A.ORDER_DATE_SK=C.DATE_SK
11 GROUP BY
12 CUSTOMER_NUMBER,
13 YEAR
14 HAVING COUNT (*)>1
15* AND (12-TO_CHAR(MAX(BOOKING_DATE),'MM'))<12
16 ;
CUSTOMER_NUMBER YEAR COUNT(*)
--------------- ---------- ----------
2 2007 3
3 2007 3
1 2007 4
4 2007 3
5 2007 3
/////////////////////////////////////////////////////////////////////////////////////////////////////
CREATE TABLE customer_dim
( customer_sk INT NOT NULL PRIMARY KEY,
customer_number NUMBER(3)
customer_name CHAR (50),
customer_street_address CHAR (50),
customer_zip_code NUMBER (5),
customer_city CHAR (30),
customer_state CHAR (2),
effective_date DATE,
expiry_date DATE );
///////////////////CREATING PRODUCT_DIM TABLE//////////////////////////////////////
CREATE TABLE product_dim
( product_sk INT NOT NULL PRIMARY KEY,
product_code NUMBER,
product_name CHAR (30),
product_category CHAR (30),
effective_date DATE,
expiry_date DATE );
//////////////////////CREATING ORDER_DIM TABLE/////////////////////////////////////
CREATE TABLE order_dim
( order_sk INT NOT NULL PRIMARY KEY,
order_number INT,
effective_date DATE,
expiry_date DATE );
////////////////////////////CREATING DATE_DIM TABLE////////////////////////////////
CREATE TABLE date_dim
( date_sk INT NOT NULL PRIMARY KEY,
Booking_date DATE,
month_name CHAR (9),
month NUMBER (2),
quarter NUMBER (1),
year NUMBER (4),
effective_date DATE,
expiry_date DATE );
///////////////////////////CREATING SALES_ORDER_FACT TABLE/////////////////////////
CREATE TABLE sales_order_fact
( order_sk NUMBER,
customer_sk NUMBER,
product_sk NUMBER,
order_date_sk NUMBER,
order_amount DECIMAL (10, 2));
/////////////////////////////CUSTOMER_DIM///////////////////////////////////////
DROP SEQUENCE auto_incr;
CREATE SEQUENCE auto_incr
START WITH 1
INCREMENT BY 1
CACHE 100;
INSERT INTO customer_dim VALUES(auto_incr.nextval, 1,'Big Customers','7500 Louise Dr.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 2,'Small Stores','2500 Woodland St.','17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 3,'Medium Retailers','1111 Ritter Rd.','17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 4,'Good Companies','9500 Scott St.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 5,'Wonderful Shops','3333 Rossmoyne Rd.','17050','Mechanicsburg','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO customer_dim VALUES(auto_incr.nextval, 6, 'Loyal Clients', '7070 Ritter Rd.', '17055','Pittsburgh','PA',CURRENT_DATE,to_date('9999-12-31','YYYY-MM-DD'));
//////////////////////////////////CHAPTER:2 CUSTOMER_DIM////////////////////////////////////
UPDATE customer_dim SET customer_name='Really Large Customers' WHERE customer_number=1;
INSERT INTO customer_dim VALUES(auto_incr.nextval,7,'Distinguished Partners','9999 Scott St.','17050','Mechanicsburg','PA',CURRENT_DATE+1,to_date('9999-12-31','YYYY-MM-DD'));
/////////////////////////////////////PRODUCT_DIM////////////////////////////////////
DROP SEQUENCE pro_auto;
CREATE SEQUENCE pro_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO product_dim VALUES(pro_auto.nextval,1,'Hard Disk','Storage',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,2,'Floppy Drive','Storage',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,3,'LCD Panel','Monitor',current_date+2,TO_DATE('9999-12 31','YYYY-MM-DD'));
INSERT INTO product_dim VALUES(pro_auto.nextval,1,'Hard Disk','Storage',current_date+2,current_date+3);
/////////////////////////////////////Chapter 3////////////////////////////////////////////////////
///////////////////////////////////////ORDER_DIM///////////////////////////////////////////////////
DROP SEQUENCE order_auto;
CREATE SEQUENCE order_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO order_dim VALUES (order_auto.nextval, 1, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 2, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 3, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 4, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 5, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 6, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 7, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 8, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 9, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
INSERT INTO order_dim VALUES (order_auto.nextval, 10,CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
///////////////////////////////////////DATE_DIM/////////////////////////////////////////////////////////
DROP SEQUENCE date_auto;
CREATE SEQUENCE date_auto
START WITH 1
INCREMENT BY 1
CACHE 10;
INSERT INTO date_dim VALUES (date_auto.nextval, to_date('2007-02-05','YYYY-MM-DD'), 'February', 02, 01, 2007, CURRENT_DATE, to_date('9999-12-31','YYYY-MM-DD'));
/////////////////////////////////////////////////SALES_ORDER_FACT///////////////////////////////////////////////////
INSERT INTO sales_order_fact VALUES (1, 1, 2, 1, 1000);
INSERT INTO sales_order_fact VALUES (2, 2, 3, 1, 1000);
INSERT INTO sales_order_fact VALUES (3, 3, 4, 1, 4000);
INSERT INTO sales_order_fact VALUES (4, 4, 2, 1, 4000);
INSERT INTO sales_order_fact VALUES (5, 5, 3, 1, 6000);
INSERT INTO sales_order_fact VALUES (6, 1, 4, 1, 6000);
INSERT INTO sales_order_fact VALUES (7, 2, 2, 1, 8000);
INSERT INTO sales_order_fact VALUES (8, 3, 3, 1, 8000);
INSERT INTO sales_order_fact VALUES (9, 4, 4, 1, 10000);
INSERT INTO sales_order_fact VALUES (10, 5, 2, 1, 10000);
///////////////////////////////////////////////////////////////////////////
CHAPTER 3
///////////////////////////////////////////////////////////////////////////
SQL> select * from sales_order_fact;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
///////////////////////////////////////////////////////////////////////////
SQL> select sum(order_amount) total_amount from sales_order_fact;
TOTAL_AMOUNT
------------
253000
///////////////////////////////////////////////////////////////////////////
SQL> select avg(order_amount) average_amount from sales_order_fact;
AVERAGE_AMOUNT
--------------
15812.5
///////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT * FROM CUSTOMER_DIM;
CUSTOMER_SK CUSTOMER_NUMBER CUSTOMER_NAME CUSTOMER_STREET_ADDRESS CUSTOMER_ZIP_CODE
----------- --------------- -------------------------------------------------- ---------------------
CUSTOMER_CITY CU EFFECTIVE EXPIRY_DA
------------------------------ -- --------- ---------
1 1 Really Large Customers 7500 Louise Dr. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
2 2 Small Stores 2500 Woodland St. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
3 3 Medium Retailers 1111 Ritter Rd. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
4 4 Good Companies 9500 Scott St. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
5 5 Wonderful Shops 3333 Rossmoyne Rd. 17050
Mechanicsburg PA 30-AUG-13 31-DEC-99
6 6 Loyal Clients 7070 Ritter Rd. 17055
Pittsburgh PA 30-AUG-13 31-DEC-99
7 7 Distinguished Partners 9999 Scott St. 17050
Mechanicsburg PA 31-AUG-13 31-DEC-99
7 rows selected.
SQL> SELECT CUSTOMER_NUMBER,
2 SUM(ORDER_AMOUNT) TOTAL_SUM_ORDER_AMOUNT FROM
3 SALES_ORDER_FACT A,CUSTOMER_DIM B WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK
5 GROUP BY CUSTOMER_NUMBER;
CUSTOMER_NUMBER TOTAL_SUM_ORDER_AMOUNT
--------------- ----------------------
1 72000
2 34000
4 49000
5 56000
3 42000
////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT CUSTOMER_NUMBER,
2 SUM(ORDER_AMOUNT) TOTAL_SUM_ORDER_AMOUNT FROM
3 SALES_ORDER_FACT A,CUSTOMER_DIM B WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK AND CUSTOMER_NUMBER=1
5 GROUP BY CUSTOMER_NUMBER;
CUSTOMER_NUMBER TOTAL_SUM_ORDER_AMOUNT
--------------- ----------------------
1 72000
//////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM PRODUCT_DIM;
PRODUCT_SK PRODUCT_CODE PRODUCT_NAME PRODUCT_CATEGORY EFFECTIVE EXPIRY_DA
---------- ------------ ------------------------------ ------------------------------ --------- ----
1 1 Hard Disk Storage 01-SEP-13 31-DEC-99
2 2 Floppy Drive Storage 01-SEP-13 31-DEC-99
3 3 LCD Panel Monitor 01-SEP-13 31-DEC-99
4 1 Hard Disk Storage 01-SEP-13 02-SEP-13
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT PRODUCT_NAME,
2 SUM(ORDER_AMOUNT) TOTAL_AMOUNT_PRODUCT FROM
3 SALES_ORDER_FACT A, PRODUCT_DIM B WHERE
4 A.PRODUCT_SK=B.PRODUCT_SK
5 GROUP BY PRODUCT_NAME;
PRODUCT_NAME TOTAL_AMOUNT_PRODUCT
------------------------------ --------------------
Floppy Drive 78000
Hard Disk 95000
LCD Panel 80000
/////////////////////////////////////////////////////////////////////////////////
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
16 rows selected.
SQL> SELECT TABLE_NAME FROM USER_TABLES;
TABLE_NAME
------------------------------
CUSTOMER_DIM
PRODUCT_DIM
ORDER_DIM
DATE_DIM
SALES_ORDER_FACT
CUSTOMER_DIM_COPY
REGIONS
LOCATIONS
DEPARTMENTS
JOBS
COUNTRIES
EMPLOYEES
JOB_HISTORY
13 rows selected.
SQL> SELECT * FROM DATE_DIM
2 ;
DATE_SK BOOKING_D MONTH_NAM MONTH QUARTER YEAR EFFECTIVE EXPIRY_DA
---------- --------- --------- ---------- ---------- ---------- --------- ---------
1 05-FEB-07 February 2 1 2007 30-AUG-13 31-DEC-99
2 06-FEB-07 February 2 1 2007 30-AUG-13 31-DEC-99
SQL> SELECT CUSTOMER_NUMBER,PRODUCT_CODE,
2 SUM(ORDER_AMOUNT) SUM_OF_ORDER_AMOUNT
3 FROM SALES_ORDER_FACT A, CUSTOMER_DIM B, PRODUCT_DIM C WHERE
4 A.CUSTOMER_SK=B.CUSTOMER_SK AND A.PRODUCT_SK=C.PRODUCT_SK
5 GROUP BY CUSTOMER_NUMBER,PRODUCT_CODE;
CUSTOMER_NUMBER PRODUCT_CODE SUM_OF_ORDER_AMOUNT
--------------- ------------ -------------------
4 1 10000
5 2 10000
2 3 26000
1 2 21000
3 1 34000
4 2 39000
1 1 51000
2 2 8000
3 3 8000
5 3 46000
10 rows selected.
///////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT BOOKING_DATE,
2 SUM (ORDER_AMOUNT),
3 COUNT (*)
4 FROM SALES_ORDER_FACT A,
5 DATE_DIM B
6 WHERE
7 A.ORDER_DATE_SK=B.DATE_SK
8 GROUP BY BOOKING_DATE
9 ORDER BY BOOKING_DATE;
BOOKING_D SUM(ORDER_AMOUNT) COUNT(*)
--------- ----------------- ----------
05-FEB-07 58000 10
06-FEB-07 195000 6
///////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT YEAR, PRODUCT_NAME, CUSTOMER_CITY,
2 SUM (ORDER_AMOUNT),
3 COUNT (*)
4 FROM
5 SALES_ORDER_FACT A,
6 DATE_DIM B,
7 PRODUCT_DIM C,
8 CUSTOMER_DIM D
9 WHERE
10 A.ORDER_DATE_SK=B.DATE_SK
11 AND A.PRODUCT_SK=C.PRODUCT_SK
12 AND A.CUSTOMER_SK=D.CUSTOMER_SK
13 GROUP BY YEAR,PRODUCT_NAME, CUSTOMER_CITY
14 ORDER BY YEAR,PRODUCT_NAME, CUSTOMER_CITY;
YEAR PRODUCT_NAME CUSTOMER_CITY
---------- ------------------------------ ------------------------------
SUM(ORDER_AMOUNT) COUNT(*)
----------------- ----------
2007 Floppy Drive Mechanicsburg
70000 5
2007 Floppy Drive Pittsburgh
8000 1
2007 Hard Disk Mechanicsburg
61000 3
YEAR PRODUCT_NAME CUSTOMER_CITY
---------- ------------------------------ ------------------------------
SUM(ORDER_AMOUNT) COUNT(*)
----------------- ----------
2007 Hard Disk Pittsburgh
34000 2
2007 LCD Panel Mechanicsburg
46000 2
2007 LCD Panel Pittsburgh
34000 3
6 rows selected.
////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT
2 PRODUCT_NAME
3 ,MONTH_NAME
4 ,YEAR
5 ,SUM (ORDER_AMOUNT)
6 ,COUNT(*)
7 FROM
8 SALES_ORDER_FACT A
9 ,PRODUCT_DIM B
10 ,DATE_DIM C
11 WHERE
12 A.PRODUCT_SK = B.PRODUCT_SK
13 AND A.ORDER_DATE_SK = C.DATE_SK
14 GROUP BY
15 PRODUCT_NAME
16 ,PRODUCT_CATEGORY
17 ,MONTH_NAME
18 ,YEAR
19 HAVING PRODUCT_CATEGORY = 'STORAGE'
20 ORDER BY
21 YEAR
22 ,MONTH_NAME;
PRODUCT_NAME MONTH_NAM YEAR SUM(ORDER_AMOUNT) COUNT(*)
------------------------------ --------- ---------- ----------------- ----------
Floppy Drive February 2007 78000 6
Hard Disk February 2007 95000 5
/////////////////////////////////////////////////////////////////////////////////////////////////
SQL> SELECT
2 CUSTOMER_CITY,
3 QUARTER,
4 YEAR,
5 SUM(ORDER_AMOUNT),
6 COUNT(ORDER_SK)
7 FROM
8 SALES_ORDER_FACT A,
9 CUSTOMER_DIM B
10 ,DATE_DIM C
11 WHERE
12 A.CUSTOMER_SK=B.CUSTOMER_SK
13 AND A.ORDER_DATE_SK=C.DATE_SK
14 GROUP BY
15 CUSTOMER_CITY,
16 QUARTER,
17 YEAR
18 HAVING CUSTOMER_CITY = 'Mechanicsburg'
19 ORDER BY
20 YEAR,
21 QUARTER;
CUSTOMER_CITY QUARTER YEAR SUM(ORDER_AMOUNT)
------------------------------ ---------- ---------- -----------------
COUNT(ORDER_SK)
---------------
Mechanicsburg 1 2007 177000
10
////////////////////////////////////////////////////////////////////////////////////////////////////
SQL> ED
Wrote file afiedt.buf
1 SELECT
2 MONTH_NAME,YEAR,
3 PRODUCT_NAME,
4 SUM(ORDER_AMOUNT)
5 ,COUNT(*)
6 FROM
7 SALES_ORDER_FACT A,
8 PRODUCT_DIM B,
9 DATE_DIM C
10 WHERE
11 A.PRODUCT_SK=B.PRODUCT_SK
12 AND A.ORDER_DATE_SK=C.DATE_SK
13 GROUP BY
14 MONTH_NAME,
15 YEAR, PRODUCT_NAME
16 HAVING SUM (ORDER_AMOUNT) >= 75000
17 ORDER BY
18 MONTH_NAME,
19 YEAR,
20* PRODUCT_NAME
21 ;
MONTH_NAM YEAR PRODUCT_NAME SUM(ORDER_AMOUNT) COUNT(*)
--------- ---------- ------------------------------ ----------------- ----------
February 2007 Floppy Drive 78000 6
February 2007 Hard Disk 95000 5
February 2007 LCD Panel 80000 5
////////////////////////////////////////////////////////////////////////////////////////////////////////
SQL> ED
Wrote file afiedt.buf
1 SELECT
2 CUSTOMER_NUMBER,
3 YEAR, COUNT (*)
4 FROM
5 SALES_ORDER_FACT A,
6 CUSTOMER_DIM B,
7 DATE_DIM C
8 WHERE
9 A.CUSTOMER_SK=B.CUSTOMER_SK
10 AND A.ORDER_DATE_SK=C.DATE_SK
11 GROUP BY
12 CUSTOMER_NUMBER,
13 YEAR
14 HAVING COUNT (*)>1
15* AND (12-TO_CHAR(MAX(BOOKING_DATE),'MM'))<12
16 ;
CUSTOMER_NUMBER YEAR COUNT(*)
--------------- ---------- ----------
2 2007 3
3 2007 3
1 2007 4
4 2007 3
5 2007 3
/////////////////////////////////////////////////////////////////////////////////////////////////////
SQL Assignment 2nd Phase (Chapters
5-8)
///////////////////////////////////////////////////////////////////////////////
/////////////////////CHAPTER - 5//////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
/////////////////////CHAPTER - 5//////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
CREATING
SALES_ORDER TABLE
SQL> CREATE TABLE SALES_ORDER
2 (ORDER_NUMBER INT,
3 CUSTOMER_NUMBER INT,
4 PRODUCT_CODE INT,
5 ORDER_DATE DATE,
6 ENTRY_DATE DATE,
7 ORDER_AMOUNT DECIMAL (10,2));
Table created.
///////////////INSERTING DATA INTO ORDER_DIM TABLE///////////////////
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 17, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 18, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 19, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 20, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
//////////////////INSERTING DATA INTO DATE_DIM TABLE/////////////////////////
SQL> INSERT INTO DATE_DIM VALUES (DATE_AUTO.NEXTVAL, TO_DATE('2007-02-06','yyyy-mm-dd'), 'February',
2, 1, 2007, CURRENT_DATE, TO_DATE('9999-12-31','yyyy-mm-dd'));
1 row created.
//////////////////INSERTING DATA INTO SALES_ORDER TABLE/////////////////////
SQL> INSERT INTO SALES_ORDER VALUES (17, 1, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (18, 2, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (19, 3, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (20, 4, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 4000);
1 row created.
////////////////INSERTING THE DATA INTO SALES_ORDER_FACT MANUALLY//////////
SQL> INSERT INTO sales_order_fact VALUES(17, 1, 3, 3, 1000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(18, 2, 3, 3, 1000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(19, 3, 3, 3, 4000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(20, 4, 3, 3, 4000);
1 row created.
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
17 1 3 3 1000
18 2 3 3 1000
19 3 3 3 4000
20 4 3 3 4000
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
20 rows selected.
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////CHAPTER 6//////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////INSERTING THE DATA INTO DATE_DIM/////////////////////
SQL> INSERT INTO DATE_DIM VALUES
2 (DATE_AUTO.NEXTVAL, CURRENT_DATE,
3 TO_CHAR(CURRENT_DATE,'month'),
4 TO_CHAR(CURRENT_DATE,'dd'),
5 TO_CHAR(CURRENT_DATE,'Q'),
6 TO_CHAR(CURRENT_DATE,'YYYY'),
7 TO_DATE('1000-01-01','yyyy-mm-dd'),
8 TO_DATE('9999-12-31','yyyy-mm-dd'));
1 row created.
//////////////////////INSERTING DATA FROM SALES_ORDER TO DATE_DIM////////////////////
SQL> INSERT INTO DATE_DIM
2 SELECT ORDER_NUMBER,ORDER_DATE,
3 TO_CHAR(ORDER_DATE,'month'),
4 TO_CHAR(ORDER_DATE,'dd'),
5 TO_CHAR(ORDER_DATE,'q'),
6 TO_CHAR(ORDER_DATE,'yyyy'),
7 TO_DATE('1000-01-01','yyyy-mm-dd'),TO_DATE('9999-12-31','yyyy-mm-dd')
8 FROM sales_order
9 WHERE ORDER_DATE
10 NOT IN
11 (SELECT booking_date FROM date_dim);
0 rows created.
/////////////////////INSERTING DATA INTO SALES_ORDER//////////////////////
SQL> INSERT INTO sales_order VALUES (21, 1, 3, to_date('2007-02-07','yyyy-mm-dd'), to_date('2007-02-
07','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (22, 2, 3, to_date('2007-02-08','yyyy-mm-dd'), to_date('2007-02-
08','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (23, 3, 3, to_date('2007-02-09','yyyy-mm-dd'), to_date('2007-02-
09','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (24, 4, 3, to_date('2007-02-10','yyyy-mm-dd'), to_date('2007-02-
10','yyyy-mm-dd'), 4000);
1 row created.
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////CHAPTER 7//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
///////////////////DELETING ROWS FROM ALL THE TABLES/////////////////////
SQL> TRUNCATE table customer_dim;
Table truncated.
SQL> TRUNCATE table product_dim;
Table truncated.
SQL> TRUNCATE table order_dim;
Table truncated.
SQL> TRUNCATE table date_dim;
Table truncated.
SQL> TRUNCATE table sales_order_fact;
Table truncated.
SQL> TRUNCATE table sales_order;
Table truncated.
//////////////////INSERTING DATA INTO DATE_DIM////////////////////////
SQL> INSERT INTO DATE_DIM VALUES (date_auto.nextval, to_date('2005-03-01','YYYY-MM-DD'),
2 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'MONTH'),
3 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'mm'),
4 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'Q'),
5 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'YYYY'),
6 TO_DATE('1000-01-01','yyyy-mm-dd'),
7 TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> UPDATE date_dim set Booking_date = Booking_date +1;
1 row updated.
////////////////INSERTING DATA INTO CUSTOMER_DIM///////////////////////
SQL> DROP SEQUENCE AUTO_INCR;
Sequence dropped.
SQL> CREATE SEQUENCE AUTO_INCR
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 100;
Sequence created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 1,'Really Large Customers','7500 Louise Dr.'
,'17050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'))
;
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 2,'Small Stores','2500 Woodland St.','17055'
,'Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 3,'Medium Retailers','1111 Ritter Rd.','1705
5','Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 4,'Good Companies','9500 Scott St.','17050',
'Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 5,'Wonderful Shops','3333 Rossmoyne Rd.','17
050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 6,'Loyal Clients', '7070 Ritter Rd.', '17055
','Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 7,'Distinguished Partners','9999 Scott St.',
'17050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
//////////////////////INSERT DATA INTO PRODUCT_DIM//////////////////////////
SQL> DROP SEQUENCE PRO_AUTO;
Sequence dropped.
SQL> CREATE SEQUENCE PRO_AUTO
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 10;
Sequence created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,1,'Hard Disk Drive','Storage',TO_DATE('2005-03-
01','YYYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,2,'Floppy Drive','Storage',TO_DATE('2005-03-01'
,'YYYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,3,'LCD Panel','Monitor',TO_DATE('2005-03-01','Y
YYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
///////////////////////INSERTING DATA INTO SALES_ORDER/////////////////////////
SQL> INSERT INTO SALES_ORDER VALUES (1, 1, 1, TO_DATE('2005-02-01','yyyy-mm-dd'), TO_DATE('2005-02-0
1','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (2, 2, 2, TO_DATE('2005-02-10','yyyy-mm-dd'), TO_DATE('2005-02-1
0','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (3, 3, 3, TO_DATE('2005-03-01','yyyy-mm-dd'), TO_DATE('2005-03-0
1','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (4, 4, 1, TO_DATE('2005-04-15','yyyy-mm-dd'), TO_DATE('2005-04-1
5','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (5, 5, 2, TO_DATE('2005-05-20','yyyy-mm-dd'), TO_DATE('2005-05-2
0','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (6, 6, 3, TO_DATE('2005-07-30','yyyy-mm-dd'), TO_DATE('2005-07-3
0','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (7, 7, 1, TO_DATE('2005-09-01','yyyy-mm-dd'), TO_DATE('2005-09-0
1','yyyy-mm-dd'), 8000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (8, 1, 2, TO_DATE('2005-11-10','yyyy-mm-dd'), TO_DATE('2005-11-1
0','yyyy-mm-dd'), 8000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (9, 2, 3, TO_DATE('2006-01-05','yyyy-mm-dd'), TO_DATE('2006-01-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (10, 3, 1,TO_DATE('2006-02-10','yyyy-mm-dd'), TO_DATE('2006-02-1
0','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (11, 4, 2,TO_DATE('2006-03-15','yyyy-mm-dd'), TO_DATE('2006-03-1
5','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (12, 5, 3,TO_DATE('2006-04-20','yyyy-mm-dd'), TO_DATE('2006-04-2
0','yyyy-mm-dd'), 2500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (13, 6, 1,TO_DATE('2006-05-30','yyyy-mm-dd'), TO_DATE('2006-05-3
0','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (14, 7, 2,TO_DATE('2006-06-01','yyyy-mm-dd'), TO_DATE('2006-06-0
1','yyyy-mm-dd'), 3500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (15, 1, 3,TO_DATE('2006-07-15','yyyy-mm-dd'), TO_DATE('2006-07-1
5','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (16, 2, 1,TO_DATE('2006-08-30','yyyy-mm-dd'), TO_DATE('2006-08-3
0','yyyy-mm-dd'), 4500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (17, 3, 2,TO_DATE('2006-09-05','yyyy-mm-dd'), TO_DATE('2006-09-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (18, 4, 3,TO_DATE('2006-10-05','yyyy-mm-dd'), TO_DATE('2006-10-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (19, 5, 1,TO_DATE('2007-01-10','yyyy-mm-dd'), TO_DATE('2007-01-1
0','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (20, 6, 2,TO_DATE('2007-02-20','yyyy-mm-dd'), TO_DATE('2007-02-2
0','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (21, 7, 3,TO_DATE('2007-02-28','yyyy-mm-dd'), TO_DATE('2007-02-2
8','yyyy-mm-dd'), 4000);
1 row created.
//////////////////INSERTING DATA INTO ORDER_DIM///////////////////////
SQL>
SQL> DROP SEQUENCE ORDER_AUTO;
Sequence dropped.
SQL> CREATE SEQUENCE ORDER_AUTO
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 10;
Sequence created.
SQL> INSERT INTO ORDER_DIM SELECT ORDER_AUTO.NEXTVAL, ORDER_NUMBER,ORDER_DATE, TO_DATE('9999-12-31'
,'YYYY-MM-DD') FROM SALES_ORDER
2 WHERE ORDER_DATE >= TO_DATE('2005-03-01','YYYY-MM-DD')
3 AND ORDER_DATE < TO_DATE('2007-02-28','YYYY-MM-DD');
18 rows created.
///////////////////////INSERTING DATA INTO SALES_ORDER_FACT///////////////////
SQL> INSERT INTO SALES_ORDER_FACT
2 SELECT ORDER_SK, CUSTOMER_SK, PRODUCT_SK, DATE_SK, ORDER_AMOUNT
3 FROM SALES_ORDER A, ORDER_DIM B, CUSTOMER_DIM C, PRODUCT_DIM D,DATE_DIM E
4 WHERE
5 A.ORDER_NUMBER = B.ORDER_NUMBER
6 AND A.CUSTOMER_NUMBER = c.CUSTOMER_NUMBER
7 AND A.PRODUCT_CODE = D.PRODUCT_CODE
8 AND a.order_date >= to_date('2005-03-01','YYYY-MM-DD')
9 AND a.order_date < to_date('2007-02-28','YYYY-MM-DD');
18 rows created.
SQL> SELECT ORDER_NUMBER, CUSTOMER_NAME,PRODUCT_NAME,BOOKING_DATE,ORDER_AMOUNT
2 FROM SALES_ORDER_FACT A, CUSTOMER_DIM B, PRODUCT_DIM C, ORDER_DIM D, DATE_DIM
3 WHERE A.CUSTOMER_SK = B.CUSTOMER_SK
4 AND A.PRODUCT_SK = C.PRODUCT_SK
5 AND A.ORDER_SK = D.ORDER_SK
6 AND A.ORDER_DATE_SK=E.DATE_SK;
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
3 Medium Retailers
LCD Panel 02-MAR-05 4000
4 Good Companies
Hard Disk Drive 02-MAR-05 4000
5 Wonderful Shops
Floppy Drive 02-MAR-05 6000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
6 Loyal Clients
LCD Panel 02-MAR-05 6000
7 Distinguished Partners
Hard Disk Drive 02-MAR-05 8000
8 Really Large Customers
Floppy Drive 02-MAR-05 8000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
9 Small Stores
LCD Panel 02-MAR-05 1000
10 Medium Retailers
Hard Disk Drive 02-MAR-05 1000
11 Good Companies
Floppy Drive 02-MAR-05 2000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
12 Wonderful Shops
LCD Panel 02-MAR-05 2500
13 Loyal Clients
Hard Disk Drive 02-MAR-05 3000
14 Distinguished Partners
Floppy Drive 02-MAR-05 3500
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
15 Really Large Customers
LCD Panel 02-MAR-05 4000
16 Small Stores
Hard Disk Drive 02-MAR-05 4500
17 Medium Retailers
Floppy Drive 02-MAR-05 1000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
18 Good Companies
LCD Panel 02-MAR-05 1000
19 Wonderful Shops
Hard Disk Drive 02-MAR-05 4000
20 Loyal Clients
Floppy Drive 02-MAR-05 4000
18 rows selected.
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////CHAPTER - 8/////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
////////////////////INSERTION AND UPDATION IN EXISTING TABLE/////////////////
SQL> INSERT INTO order_dim ( order_sk, order_number, effective_date, expiry_date)
2 SELECT order_auto.nextval, order_number,order_date, to_date('9999-12-31','YYYY-MM-DD')
3 FROM sales_order
4 WHERE entry_date = CURRENT_DATE;
0 rows created.
SQL> INSERT INTO sales_order_fact
2 SELECT order_sk, customer_sk, product_sk, date_sk, order_amount
3 FROM sales_order a, order_dim b, customer_dim c, product_dim d, date_dim e
4 WHERE
5 a.order_number = b.order_number
6 AND a.customer_number = c.customer_number
7 AND a.order_date >= c.effective_date
8 AND a.order_date <= c.expiry_date
9 AND a.product_code = d.product_code
10 AND a.order_date >= d.effective_date
11 AND a.order_date <= d.expiry_date
12 AND a.order_date = e.booking_date
13 AND a.entry_date = CURRENT_DATE
14 ;
0 rows created.
SQL> update customer_dim set CUSTOMER_STREET_ADDRESS='7777 Ritter Rd.' where CUSTOMER_NUMBER=6;
1 row updated.
SQL> update customer_dim set customer_name='Distinguished Agencies' where CUSTOMER_NUMBER=7;
1 row updated.
SQL> INSERT INTO customer_dim VALUES(auto_incr.nextval, 8,'Subsidiaries','10000 Wetline Blvd.','1705
5','Pittsburgh','PA',to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO product_dim VALUES(pro_auto.nextval,4,'Keyboard','Peripheral',
2 to_date('2005-03-01','YYYY-MM-DD'),
3 TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO sales_order VALUES (22, 1, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (23, 2, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO sales_order VALUES (24, 3, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO sales_order VALUES (25, 4, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (26, 5, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (27, 6, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO sales_order VALUES (28, 7, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 5000);
1 row created.
SQL> INSERT INTO sales_order VALUES (29, 8, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 7000);
1 row created.
SQL> INSERT INTO sales_order VALUES (30, 1, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (31, 2, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO sales_order VALUES (32, 3, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (33, 4, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO sales_order VALUES (34, 5, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2500);
1 row created.
SQL> INSERT INTO sales_order VALUES (35, 6, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 5000);
1 row created.
SQL> INSERT INTO sales_order VALUES (36, 7, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 7500);
1 row created.
SQL> INSERT INTO sales_order VALUES (37, 8, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
SQL> CREATE TABLE SALES_ORDER
2 (ORDER_NUMBER INT,
3 CUSTOMER_NUMBER INT,
4 PRODUCT_CODE INT,
5 ORDER_DATE DATE,
6 ENTRY_DATE DATE,
7 ORDER_AMOUNT DECIMAL (10,2));
Table created.
///////////////INSERTING DATA INTO ORDER_DIM TABLE///////////////////
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 17, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 18, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 19, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
SQL> INSERT INTO order_dim VALUES (order_auto.nextval, 20, CURRENT_DATE, to_date('9999-12-31','yyyy-
mm-dd'));
1 row created.
//////////////////INSERTING DATA INTO DATE_DIM TABLE/////////////////////////
SQL> INSERT INTO DATE_DIM VALUES (DATE_AUTO.NEXTVAL, TO_DATE('2007-02-06','yyyy-mm-dd'), 'February',
2, 1, 2007, CURRENT_DATE, TO_DATE('9999-12-31','yyyy-mm-dd'));
1 row created.
//////////////////INSERTING DATA INTO SALES_ORDER TABLE/////////////////////
SQL> INSERT INTO SALES_ORDER VALUES (17, 1, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (18, 2, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (19, 3, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (20, 4, 1, TO_DATE('2007-02-06','yyyy-mm-dd'), TO_DATE('2007-02-
06','yyyy-mm-dd'), 4000);
1 row created.
////////////////INSERTING THE DATA INTO SALES_ORDER_FACT MANUALLY//////////
SQL> INSERT INTO sales_order_fact VALUES(17, 1, 3, 3, 1000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(18, 2, 3, 3, 1000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(19, 3, 3, 3, 4000);
1 row created.
SQL> INSERT INTO sales_order_fact VALUES(20, 4, 3, 3, 4000);
1 row created.
SQL> SELECT * FROM SALES_ORDER_FACT;
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
17 1 3 3 1000
18 2 3 3 1000
19 3 3 3 4000
20 4 3 3 4000
1 1 2 1 1000
2 2 3 1 1000
3 3 4 1 4000
4 4 2 1 4000
5 5 3 1 6000
6 1 4 1 6000
7 2 2 1 8000
ORDER_SK CUSTOMER_SK PRODUCT_SK ORDER_DATE_SK ORDER_AMOUNT
---------- ----------- ---------- ------------- ------------
8 3 3 1 8000
9 4 4 1 10000
10 5 2 1 10000
11 1 2 2 20000
12 2 3 2 25000
13 3 4 2 30000
14 4 2 2 35000
15 5 3 2 40000
16 1 4 2 45000
20 rows selected.
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////CHAPTER 6//////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////INSERTING THE DATA INTO DATE_DIM/////////////////////
SQL> INSERT INTO DATE_DIM VALUES
2 (DATE_AUTO.NEXTVAL, CURRENT_DATE,
3 TO_CHAR(CURRENT_DATE,'month'),
4 TO_CHAR(CURRENT_DATE,'dd'),
5 TO_CHAR(CURRENT_DATE,'Q'),
6 TO_CHAR(CURRENT_DATE,'YYYY'),
7 TO_DATE('1000-01-01','yyyy-mm-dd'),
8 TO_DATE('9999-12-31','yyyy-mm-dd'));
1 row created.
//////////////////////INSERTING DATA FROM SALES_ORDER TO DATE_DIM////////////////////
SQL> INSERT INTO DATE_DIM
2 SELECT ORDER_NUMBER,ORDER_DATE,
3 TO_CHAR(ORDER_DATE,'month'),
4 TO_CHAR(ORDER_DATE,'dd'),
5 TO_CHAR(ORDER_DATE,'q'),
6 TO_CHAR(ORDER_DATE,'yyyy'),
7 TO_DATE('1000-01-01','yyyy-mm-dd'),TO_DATE('9999-12-31','yyyy-mm-dd')
8 FROM sales_order
9 WHERE ORDER_DATE
10 NOT IN
11 (SELECT booking_date FROM date_dim);
0 rows created.
/////////////////////INSERTING DATA INTO SALES_ORDER//////////////////////
SQL> INSERT INTO sales_order VALUES (21, 1, 3, to_date('2007-02-07','yyyy-mm-dd'), to_date('2007-02-
07','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (22, 2, 3, to_date('2007-02-08','yyyy-mm-dd'), to_date('2007-02-
08','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (23, 3, 3, to_date('2007-02-09','yyyy-mm-dd'), to_date('2007-02-
09','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (24, 4, 3, to_date('2007-02-10','yyyy-mm-dd'), to_date('2007-02-
10','yyyy-mm-dd'), 4000);
1 row created.
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////CHAPTER 7//////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
///////////////////DELETING ROWS FROM ALL THE TABLES/////////////////////
SQL> TRUNCATE table customer_dim;
Table truncated.
SQL> TRUNCATE table product_dim;
Table truncated.
SQL> TRUNCATE table order_dim;
Table truncated.
SQL> TRUNCATE table date_dim;
Table truncated.
SQL> TRUNCATE table sales_order_fact;
Table truncated.
SQL> TRUNCATE table sales_order;
Table truncated.
//////////////////INSERTING DATA INTO DATE_DIM////////////////////////
SQL> INSERT INTO DATE_DIM VALUES (date_auto.nextval, to_date('2005-03-01','YYYY-MM-DD'),
2 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'MONTH'),
3 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'mm'),
4 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'Q'),
5 TO_CHAR(TO_DATE('2005-03-01','YYYY-MM-DD'),'YYYY'),
6 TO_DATE('1000-01-01','yyyy-mm-dd'),
7 TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> UPDATE date_dim set Booking_date = Booking_date +1;
1 row updated.
////////////////INSERTING DATA INTO CUSTOMER_DIM///////////////////////
SQL> DROP SEQUENCE AUTO_INCR;
Sequence dropped.
SQL> CREATE SEQUENCE AUTO_INCR
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 100;
Sequence created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 1,'Really Large Customers','7500 Louise Dr.'
,'17050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'))
;
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 2,'Small Stores','2500 Woodland St.','17055'
,'Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 3,'Medium Retailers','1111 Ritter Rd.','1705
5','Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 4,'Good Companies','9500 Scott St.','17050',
'Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 5,'Wonderful Shops','3333 Rossmoyne Rd.','17
050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 6,'Loyal Clients', '7070 Ritter Rd.', '17055
','Pittsburgh','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES(AUTO_INCR.NEXTVAL, 7,'Distinguished Partners','9999 Scott St.',
'17050','Mechanicsburg','PA',TO_DATE('2005-03-01','YYYY-MM-DD'),TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
//////////////////////INSERT DATA INTO PRODUCT_DIM//////////////////////////
SQL> DROP SEQUENCE PRO_AUTO;
Sequence dropped.
SQL> CREATE SEQUENCE PRO_AUTO
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 10;
Sequence created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,1,'Hard Disk Drive','Storage',TO_DATE('2005-03-
01','YYYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,2,'Floppy Drive','Storage',TO_DATE('2005-03-01'
,'YYYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO PRODUCT_DIM VALUES(PRO_AUTO.NEXTVAL,3,'LCD Panel','Monitor',TO_DATE('2005-03-01','Y
YYY-MM-DD'),TO_DATE('9999-12 31','YYYY-MM-DD'));
1 row created.
///////////////////////INSERTING DATA INTO SALES_ORDER/////////////////////////
SQL> INSERT INTO SALES_ORDER VALUES (1, 1, 1, TO_DATE('2005-02-01','yyyy-mm-dd'), TO_DATE('2005-02-0
1','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (2, 2, 2, TO_DATE('2005-02-10','yyyy-mm-dd'), TO_DATE('2005-02-1
0','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (3, 3, 3, TO_DATE('2005-03-01','yyyy-mm-dd'), TO_DATE('2005-03-0
1','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (4, 4, 1, TO_DATE('2005-04-15','yyyy-mm-dd'), TO_DATE('2005-04-1
5','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (5, 5, 2, TO_DATE('2005-05-20','yyyy-mm-dd'), TO_DATE('2005-05-2
0','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (6, 6, 3, TO_DATE('2005-07-30','yyyy-mm-dd'), TO_DATE('2005-07-3
0','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (7, 7, 1, TO_DATE('2005-09-01','yyyy-mm-dd'), TO_DATE('2005-09-0
1','yyyy-mm-dd'), 8000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (8, 1, 2, TO_DATE('2005-11-10','yyyy-mm-dd'), TO_DATE('2005-11-1
0','yyyy-mm-dd'), 8000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (9, 2, 3, TO_DATE('2006-01-05','yyyy-mm-dd'), TO_DATE('2006-01-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (10, 3, 1,TO_DATE('2006-02-10','yyyy-mm-dd'), TO_DATE('2006-02-1
0','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (11, 4, 2,TO_DATE('2006-03-15','yyyy-mm-dd'), TO_DATE('2006-03-1
5','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (12, 5, 3,TO_DATE('2006-04-20','yyyy-mm-dd'), TO_DATE('2006-04-2
0','yyyy-mm-dd'), 2500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (13, 6, 1,TO_DATE('2006-05-30','yyyy-mm-dd'), TO_DATE('2006-05-3
0','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (14, 7, 2,TO_DATE('2006-06-01','yyyy-mm-dd'), TO_DATE('2006-06-0
1','yyyy-mm-dd'), 3500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (15, 1, 3,TO_DATE('2006-07-15','yyyy-mm-dd'), TO_DATE('2006-07-1
5','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (16, 2, 1,TO_DATE('2006-08-30','yyyy-mm-dd'), TO_DATE('2006-08-3
0','yyyy-mm-dd'), 4500);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (17, 3, 2,TO_DATE('2006-09-05','yyyy-mm-dd'), TO_DATE('2006-09-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (18, 4, 3,TO_DATE('2006-10-05','yyyy-mm-dd'), TO_DATE('2006-10-0
5','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (19, 5, 1,TO_DATE('2007-01-10','yyyy-mm-dd'), TO_DATE('2007-01-1
0','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (20, 6, 2,TO_DATE('2007-02-20','yyyy-mm-dd'), TO_DATE('2007-02-2
0','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (21, 7, 3,TO_DATE('2007-02-28','yyyy-mm-dd'), TO_DATE('2007-02-2
8','yyyy-mm-dd'), 4000);
1 row created.
//////////////////INSERTING DATA INTO ORDER_DIM///////////////////////
SQL>
SQL> DROP SEQUENCE ORDER_AUTO;
Sequence dropped.
SQL> CREATE SEQUENCE ORDER_AUTO
2 START WITH 1
3 INCREMENT BY 1
4 CACHE 10;
Sequence created.
SQL> INSERT INTO ORDER_DIM SELECT ORDER_AUTO.NEXTVAL, ORDER_NUMBER,ORDER_DATE, TO_DATE('9999-12-31'
,'YYYY-MM-DD') FROM SALES_ORDER
2 WHERE ORDER_DATE >= TO_DATE('2005-03-01','YYYY-MM-DD')
3 AND ORDER_DATE < TO_DATE('2007-02-28','YYYY-MM-DD');
18 rows created.
///////////////////////INSERTING DATA INTO SALES_ORDER_FACT///////////////////
SQL> INSERT INTO SALES_ORDER_FACT
2 SELECT ORDER_SK, CUSTOMER_SK, PRODUCT_SK, DATE_SK, ORDER_AMOUNT
3 FROM SALES_ORDER A, ORDER_DIM B, CUSTOMER_DIM C, PRODUCT_DIM D,DATE_DIM E
4 WHERE
5 A.ORDER_NUMBER = B.ORDER_NUMBER
6 AND A.CUSTOMER_NUMBER = c.CUSTOMER_NUMBER
7 AND A.PRODUCT_CODE = D.PRODUCT_CODE
8 AND a.order_date >= to_date('2005-03-01','YYYY-MM-DD')
9 AND a.order_date < to_date('2007-02-28','YYYY-MM-DD');
18 rows created.
SQL> SELECT ORDER_NUMBER, CUSTOMER_NAME,PRODUCT_NAME,BOOKING_DATE,ORDER_AMOUNT
2 FROM SALES_ORDER_FACT A, CUSTOMER_DIM B, PRODUCT_DIM C, ORDER_DIM D, DATE_DIM
3 WHERE A.CUSTOMER_SK = B.CUSTOMER_SK
4 AND A.PRODUCT_SK = C.PRODUCT_SK
5 AND A.ORDER_SK = D.ORDER_SK
6 AND A.ORDER_DATE_SK=E.DATE_SK;
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
3 Medium Retailers
LCD Panel 02-MAR-05 4000
4 Good Companies
Hard Disk Drive 02-MAR-05 4000
5 Wonderful Shops
Floppy Drive 02-MAR-05 6000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
6 Loyal Clients
LCD Panel 02-MAR-05 6000
7 Distinguished Partners
Hard Disk Drive 02-MAR-05 8000
8 Really Large Customers
Floppy Drive 02-MAR-05 8000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
9 Small Stores
LCD Panel 02-MAR-05 1000
10 Medium Retailers
Hard Disk Drive 02-MAR-05 1000
11 Good Companies
Floppy Drive 02-MAR-05 2000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
12 Wonderful Shops
LCD Panel 02-MAR-05 2500
13 Loyal Clients
Hard Disk Drive 02-MAR-05 3000
14 Distinguished Partners
Floppy Drive 02-MAR-05 3500
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
15 Really Large Customers
LCD Panel 02-MAR-05 4000
16 Small Stores
Hard Disk Drive 02-MAR-05 4500
17 Medium Retailers
Floppy Drive 02-MAR-05 1000
ORDER_NUMBER CUSTOMER_NAME
------------ --------------------------------------------------
PRODUCT_NAME BOOKING_D ORDER_AMOUNT
------------------------------ --------- ------------
18 Good Companies
LCD Panel 02-MAR-05 1000
19 Wonderful Shops
Hard Disk Drive 02-MAR-05 4000
20 Loyal Clients
Floppy Drive 02-MAR-05 4000
18 rows selected.
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////CHAPTER - 8/////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
////////////////////INSERTION AND UPDATION IN EXISTING TABLE/////////////////
SQL> INSERT INTO order_dim ( order_sk, order_number, effective_date, expiry_date)
2 SELECT order_auto.nextval, order_number,order_date, to_date('9999-12-31','YYYY-MM-DD')
3 FROM sales_order
4 WHERE entry_date = CURRENT_DATE;
0 rows created.
SQL> INSERT INTO sales_order_fact
2 SELECT order_sk, customer_sk, product_sk, date_sk, order_amount
3 FROM sales_order a, order_dim b, customer_dim c, product_dim d, date_dim e
4 WHERE
5 a.order_number = b.order_number
6 AND a.customer_number = c.customer_number
7 AND a.order_date >= c.effective_date
8 AND a.order_date <= c.expiry_date
9 AND a.product_code = d.product_code
10 AND a.order_date >= d.effective_date
11 AND a.order_date <= d.expiry_date
12 AND a.order_date = e.booking_date
13 AND a.entry_date = CURRENT_DATE
14 ;
0 rows created.
SQL> update customer_dim set CUSTOMER_STREET_ADDRESS='7777 Ritter Rd.' where CUSTOMER_NUMBER=6;
1 row updated.
SQL> update customer_dim set customer_name='Distinguished Agencies' where CUSTOMER_NUMBER=7;
1 row updated.
SQL> INSERT INTO customer_dim VALUES(auto_incr.nextval, 8,'Subsidiaries','10000 Wetline Blvd.','1705
5','Pittsburgh','PA',to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO product_dim VALUES(pro_auto.nextval,4,'Keyboard','Peripheral',
2 to_date('2005-03-01','YYYY-MM-DD'),
3 TO_DATE('9999-12-31','YYYY-MM-DD'));
1 row created.
SQL> INSERT INTO sales_order VALUES (22, 1, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (23, 2, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO sales_order VALUES (24, 3, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO sales_order VALUES (25, 4, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (26, 5, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (27, 6, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 3000);
1 row created.
SQL> INSERT INTO sales_order VALUES (28, 7, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 5000);
1 row created.
SQL> INSERT INTO sales_order VALUES (29, 8, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 7000);
1 row created.
SQL> INSERT INTO sales_order VALUES (30, 1, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
1 row created.
SQL> INSERT INTO sales_order VALUES (31, 2, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2000);
1 row created.
SQL> INSERT INTO sales_order VALUES (32, 3, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 4000);
1 row created.
SQL> INSERT INTO sales_order VALUES (33, 4, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 6000);
1 row created.
SQL> INSERT INTO sales_order VALUES (34, 5, 1, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 2500);
1 row created.
SQL> INSERT INTO sales_order VALUES (35, 6, 2, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 5000);
1 row created.
SQL> INSERT INTO sales_order VALUES (36, 7, 3, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 7500);
1 row created.
SQL> INSERT INTO sales_order VALUES (37, 8, 4, to_date('2007–03–01','yyyy-mm-dd'), to_date('2007–03–
01','yyyy-mm-dd'), 1000);
SQL Assignment Chapter 9 - Job
Scheduling
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////CHAPTER
- 9 JOB SCHEDULING////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SQL Assignment - (Chapter 10-11)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////CHAPTER-10//////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////ADDITION OF COLUMN INTO CUSTOMER_DIM/////////////////////
SQL> ALTER TABLE customer_dim
2 ADD (shipping_address CHAR(50) ,
3 shipping_zip_code INT,
4 shipping_city CHAR (30),
5 shipping_state CHAR (2));
Table altered.
////////////ADDITION OF COLUMN ORDER_QUANTITY INTO SALES_ORDER//////////////
SQL> ALTER TABLE SALES_ORDER
2 ADD ORDER_QUANTITY INT;
Table altered.
///////////DELETION OF COLUMN FROM TABLE////////////////////////////
SQL> ALTER TABLE SALES_ORDER DROP COLUMN ORDER_QUANTITY;
Table altered.
////////////INSERTION OF DATA IN ORDER_DIM//////////////////////////
SQL> INSERT INTO ORDER_DIM(ORDER_SK,ORDER_NUMBER,EFFECTIVE_DATE,EXPIRY_DATE)
2 SELECT ORDER_AUTO.NEXTVAL,ORDER_NUMBER,ORDER_DATE,TO_DATE('9999-12-
31','YYYY-MM-DD')
3 FROM SALES_ORDER
4 WHERE ENTRY_DATE = CURRENT_DATE;
0 rows created.
////////////////INSERTION OF DATA INTO SALES_ORDER_FACT////////////////
SQL> INSERT INTO SALES_ORDER_FACT
2 SELECT ORDER_SK, CUSTOMER_SK,PRODUCT_SK,DATE_SK,ORDER_AMOUNT
3 FROM SALES_ORDER A,ORDER_DIM B,CUSTOMER_DIM C,PRODUCT_DIM D,DATE_DIM E
4 WHERE
5 A.ORDER_NUMBER = B.ORDER_NUMBER
6 AND A.CUSTOMER_NUMBER = C.CUSTOMER_NUMBER
7 AND A.ORDER_DATE >= C.EFFECTIVE_DATE
8 AND A.ORDER_DATE <= C.EXPIRY_DATE
9 AND A.PRODUCT_CODE= D.PRODUCT_CODE
10 AND A.ORDER_DATE >= D.EFFECTIVE_DATE
11 AND A.ORDER_DATE <= D.EXPIRY_DATE
12 AND A.ORDER_DATE = E.BOOKING_DATE
13 AND A.entry_date = CURRENT_DATE;
0 rows created.
////////////////INSERTION OF DATA INTO CUSTOMER_DIM//////////////////////
SQL> TRUNCATE TABLE CUSTOMER_DIM;
Table truncated.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 1,'Really Large
Customers','7500 Louise Dr.
','17050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'7500 Louise Dr.', '1
7050', 'Mechanicsburg', 'PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 2,'Small Stores','2500
Woodland St.','17055
','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'2500 Woodland St.','
17055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 3,'Medium
Retailers','1111 Ritter Rd.','170
55','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'1111 Ritter Rd.','17
055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 4,'Good
Companies','9500 Scott St.','17050'
,'Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'9500 Scott St.','170
50','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 5,'Wonderful
Shops','3333 Rossmoyne Rd.','1
7050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'3333 Rossmoyne Rd.',
'17050','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 6,'Loyal Clients',
'7070 Ritter Rd.', '1705
5','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'7070 Ritter Rd.', '1
7055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 7,'Distinguished
Partners','9999 Scott St.'
,'17050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'9999 Scott St.','170
50','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 8,'Subsidiaries',
'10000 Wetline Blvd.', '1
7055','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'10000 Wetline Blvd.'
, '17055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 9,'Online
Distributors','2323 Louise Dr.','
17055','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'2323 Louise Dr.','17
055','Pittsburgh','PA');
1 row created.
//////////////////INSERTION OF DATA INTO SALES_ORDER//////////////////////
SQL> ALTER TABLE sales_order
2 ADD order_quantity INT
3 ;
Table altered.
SQL> INSERT INTO sales_order VALUES (38, 1, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (39, 2, 2, TO_DATE('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 2000,20);
1 row created.
SQL> INSERT INTO sales_order VALUES (40, 3, 3, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 4000,40);
1 row created.
SQL> INSERT INTO sales_order VALUES (41, 4, 4, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 6000,60);
1 row created.
SQL> INSERT INTO sales_order VALUES (42, 5, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 2500,25);
1 row created.
SQL> INSERT INTO sales_order VALUES (43, 6, 2, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 5000,50);
1 row created.
SQL> INSERT INTO sales_order VALUES (44, 7, 3, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 7500,75);
1 row created.
SQL> INSERT INTO sales_order VALUES (45, 8, 4, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
SQL> INSERT INTO sales_order VALUES (46, 9, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////CHAPTER 11////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////ADDITION OF COLUMN IN DATE_DIM//////////////
SQL> ALTER TABLE date_dim
2 ADD promo_ind CHAR(1)
3 ;
Table altered.
////////////////CREATING PROMO_SCHEDULE_STG TABLE///////////////
SQL> CREATE TABLE PROMO_SCHEDULE_STG
2 (PROMO_CODE VARCHAR(3),
3 PROMO_NAME VARCHAR(20),
4 PROMO_START_DATE DATE,
5 PROMO_LAST_DATE DATE);
Table created.
SQL> insert into promo_schedule_stg values('SO','Special Offer',to_date('2007-
04-01','yyyy-mm-dd'),
to_date('2007-04-10','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('DP','Disk Promotion',to_date('2007
-05-05','yyyy-mm-dd')
,to_date('2007-05-20','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('MS','Month Special',to_date('2007-
06-01','yyyy-mm-dd'),
to_date('2007-06-30','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('MS','Monitor Promotion',to_date
('2007-07-10','yyyy-mm-d
d'),to_date('2007-07-15','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('BS','Back to School',to_date('2007
-08-10','yyyy-mm-dd')
,to_date('2007-08-30','yyyy-mm-dd'));
1 row created.
///////////UPDATING DATE_DIM DATA FROM PROMO_SCHEDULE_STG TABLE////////////
SQL> UPDATE DATE_DIM A SET A.PROMO_IND='Y'
2 WHERE A.BOOKING_DATE IN (SELECT B.PROMO_START_DATE
3 FROM PROMO_SCHEDULE_STG B WHERE
4 A.BOOKING_DATE >= B.PROMO_START_DATE
5 AND A.BOOKING_DATE <= B.PROMO_LAST_DATE);
0 rows updated.
///////////////////////////////////////////////CHAPTER-10//////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////ADDITION OF COLUMN INTO CUSTOMER_DIM/////////////////////
SQL> ALTER TABLE customer_dim
2 ADD (shipping_address CHAR(50) ,
3 shipping_zip_code INT,
4 shipping_city CHAR (30),
5 shipping_state CHAR (2));
Table altered.
////////////ADDITION OF COLUMN ORDER_QUANTITY INTO SALES_ORDER//////////////
SQL> ALTER TABLE SALES_ORDER
2 ADD ORDER_QUANTITY INT;
Table altered.
///////////DELETION OF COLUMN FROM TABLE////////////////////////////
SQL> ALTER TABLE SALES_ORDER DROP COLUMN ORDER_QUANTITY;
Table altered.
////////////INSERTION OF DATA IN ORDER_DIM//////////////////////////
SQL> INSERT INTO ORDER_DIM(ORDER_SK,ORDER_NUMBER,EFFECTIVE_DATE,EXPIRY_DATE)
2 SELECT ORDER_AUTO.NEXTVAL,ORDER_NUMBER,ORDER_DATE,TO_DATE('9999-12-
31','YYYY-MM-DD')
3 FROM SALES_ORDER
4 WHERE ENTRY_DATE = CURRENT_DATE;
0 rows created.
////////////////INSERTION OF DATA INTO SALES_ORDER_FACT////////////////
SQL> INSERT INTO SALES_ORDER_FACT
2 SELECT ORDER_SK, CUSTOMER_SK,PRODUCT_SK,DATE_SK,ORDER_AMOUNT
3 FROM SALES_ORDER A,ORDER_DIM B,CUSTOMER_DIM C,PRODUCT_DIM D,DATE_DIM E
4 WHERE
5 A.ORDER_NUMBER = B.ORDER_NUMBER
6 AND A.CUSTOMER_NUMBER = C.CUSTOMER_NUMBER
7 AND A.ORDER_DATE >= C.EFFECTIVE_DATE
8 AND A.ORDER_DATE <= C.EXPIRY_DATE
9 AND A.PRODUCT_CODE= D.PRODUCT_CODE
10 AND A.ORDER_DATE >= D.EFFECTIVE_DATE
11 AND A.ORDER_DATE <= D.EXPIRY_DATE
12 AND A.ORDER_DATE = E.BOOKING_DATE
13 AND A.entry_date = CURRENT_DATE;
0 rows created.
////////////////INSERTION OF DATA INTO CUSTOMER_DIM//////////////////////
SQL> TRUNCATE TABLE CUSTOMER_DIM;
Table truncated.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 1,'Really Large
Customers','7500 Louise Dr.
','17050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'7500 Louise Dr.', '1
7050', 'Mechanicsburg', 'PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 2,'Small Stores','2500
Woodland St.','17055
','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'2500 Woodland St.','
17055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 3,'Medium
Retailers','1111 Ritter Rd.','170
55','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'1111 Ritter Rd.','17
055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 4,'Good
Companies','9500 Scott St.','17050'
,'Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'9500 Scott St.','170
50','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 5,'Wonderful
Shops','3333 Rossmoyne Rd.','1
7050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'3333 Rossmoyne Rd.',
'17050','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 6,'Loyal Clients',
'7070 Ritter Rd.', '1705
5','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'7070 Ritter Rd.', '1
7055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 7,'Distinguished
Partners','9999 Scott St.'
,'17050','Mechanicsburg','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'9999 Scott St.','170
50','Mechanicsburg','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 8,'Subsidiaries',
'10000 Wetline Blvd.', '1
7055','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'10000 Wetline Blvd.'
, '17055','Pittsburgh','PA');
1 row created.
SQL> INSERT INTO CUSTOMER_DIM VALUES (AUTO_INCR.NEXTVAL, 9,'Online
Distributors','2323 Louise Dr.','
17055','Pittsburgh','PA',
2 to_date('2005-03-01','YYYY-MM-DD'),to_date('9999-12-31','YYYY-MM-
DD'),'2323 Louise Dr.','17
055','Pittsburgh','PA');
1 row created.
//////////////////INSERTION OF DATA INTO SALES_ORDER//////////////////////
SQL> ALTER TABLE sales_order
2 ADD order_quantity INT
3 ;
Table altered.
SQL> INSERT INTO sales_order VALUES (38, 1, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
SQL> INSERT INTO SALES_ORDER VALUES (39, 2, 2, TO_DATE('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 2000,20);
1 row created.
SQL> INSERT INTO sales_order VALUES (40, 3, 3, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 4000,40);
1 row created.
SQL> INSERT INTO sales_order VALUES (41, 4, 4, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 6000,60);
1 row created.
SQL> INSERT INTO sales_order VALUES (42, 5, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 2500,25);
1 row created.
SQL> INSERT INTO sales_order VALUES (43, 6, 2, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 5000,50);
1 row created.
SQL> INSERT INTO sales_order VALUES (44, 7, 3, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 7500,75);
1 row created.
SQL> INSERT INTO sales_order VALUES (45, 8, 4, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
SQL> INSERT INTO sales_order VALUES (46, 9, 1, to_date('2007-03-02','yyyy-mm-
dd'), to_date('2007-03-
02','yyyy-mm-dd'), 1000,10);
1 row created.
////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////CHAPTER 11////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////ADDITION OF COLUMN IN DATE_DIM//////////////
SQL> ALTER TABLE date_dim
2 ADD promo_ind CHAR(1)
3 ;
Table altered.
////////////////CREATING PROMO_SCHEDULE_STG TABLE///////////////
SQL> CREATE TABLE PROMO_SCHEDULE_STG
2 (PROMO_CODE VARCHAR(3),
3 PROMO_NAME VARCHAR(20),
4 PROMO_START_DATE DATE,
5 PROMO_LAST_DATE DATE);
Table created.
SQL> insert into promo_schedule_stg values('SO','Special Offer',to_date('2007-
04-01','yyyy-mm-dd'),
to_date('2007-04-10','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('DP','Disk Promotion',to_date('2007
-05-05','yyyy-mm-dd')
,to_date('2007-05-20','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('MS','Month Special',to_date('2007-
06-01','yyyy-mm-dd'),
to_date('2007-06-30','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('MS','Monitor Promotion',to_date
('2007-07-10','yyyy-mm-d
d'),to_date('2007-07-15','yyyy-mm-dd'));
1 row created.
SQL> insert into promo_schedule_stg values('BS','Back to School',to_date('2007
-08-10','yyyy-mm-dd')
,to_date('2007-08-30','yyyy-mm-dd'));
1 row created.
///////////UPDATING DATE_DIM DATA FROM PROMO_SCHEDULE_STG TABLE////////////
SQL> UPDATE DATE_DIM A SET A.PROMO_IND='Y'
2 WHERE A.BOOKING_DATE IN (SELECT B.PROMO_START_DATE
3 FROM PROMO_SCHEDULE_STG B WHERE
4 A.BOOKING_DATE >= B.PROMO_START_DATE
5 AND A.BOOKING_DATE <= B.PROMO_LAST_DATE);
0 rows updated.




