You are on page 1of 15

1) Create Tables

Create table CUSTOMER (


CUS_CODE NUMBER not null primary key,
CUS_LNAME CHAR(20),
CUS_FNAME CHAR(20),
CUS_INITIAL CHAR(5),
CUS_AREACODE CHAR(3),
CUS_PHONE CHAR(10),
CUS_BALANCE NUMBER
);

Create table INVOICE (


INV_NUMBER NUMBER not null primary key,
CUS_CODE INTEGER,
INV_DATE CHAR(20)
);

Create table LINE (


INV_NUMBER INTEGER,
LINE_NUMBER INTEGER,
P_CODE CHAR(8),
LINE_UNITS INTEGER,
LINE_PRICE NUMBER
);

Create table PRODUCT (


P_CODE CHAR(8),
P_DESCRIPT CHAR(50),
P_INDATE CHAR(20),
P_ONHAND INTEGER,
P_MIN INTEGER,
P_PRICE NUMBER,
P_DISCOUNT NUMBER,
V_CODE CHAR(5)
);

Create table VENDOR (


V_CODE NUMBER not null primary key,
V_NAME CHAR(20),
V_CONTACT CHAR(20),
V_AREACODE CHAR(3),
V_PHONE CHAR(10),
V_STATE CHAR(2),
V_ORDER CHAR(1)
);

2) Fill Tables with data

Customer Table
INSERT INTO CUSTOMER VALUES (10010, 'Ramas', 'Alfred', 'A',
'615', '844-2573', 0);
INSERT INTO CUSTOMER VALUES (10011, 'Dunne', 'Leona', 'K',
'715', '894-1238', 0);
INSERT INTO CUSTOMER VALUES (10012, 'Smith', 'Kathy', 'W',
'615', '894-2285', 345.86);
INSERT INTO CUSTOMER VALUES (10013, 'Olowski', 'Paul', 'F',
'615', '894-2180', 536.75);
INSERT INTO CUSTOMER VALUES (10014, 'Orlando', 'Myron', '',
'615', '222-1672', 0);
INSERT INTO CUSTOMER VALUES (10015, 'O''Brian', 'Amy', 'B',
'713', '442-3381', 0);
INSERT INTO CUSTOMER VALUES (10016, 'Brown', 'James', 'G',
'615', '297-1228', 221.19);
INSERT INTO CUSTOMER VALUES (10017, 'Williams', 'George', '',
'615', '290-2556', 768.93);
INSERT INTO CUSTOMER VALUES (10018, 'Farriss', 'Anne', 'G',
'713', '382-7185', 216.55);
INSERT INTO CUSTOMER VALUES (10019, 'Smith', 'Olette', 'K',
'615', '297-3809', 0);
Line Table
INSERT INTO LINE VALUES (1001, 1,'13-Q2/P2', 1, 14.99);
INSERT INTO LINE VALUES (1001, 2,'23109-HB', 1, 9.95);
INSERT INTO LINE VALUES (1002, 1,'54778-2T', 2, 4.99);
INSERT INTO LINE VALUES (1003, 1,'2238/QPD', 1, 38.95);
INSERT INTO LINE VALUES (1003, 2,'156-QQ2', 1, 39.95);
INSERT INTO LINE VALUES (1003, 3,'13-Q2/P2', 5, 14.99);
INSERT INTO LINE VALUES (1004, 1,'54778-2T', 3, 4.99);
INSERT INTO LINE VALUES (1004, 2,'23109-HB', 2, 9.95);
INSERT INTO LINE VALUES (1005, 1,'PVC23DAT', 12, 5.87);
INSERT INTO LINE VALUES (1006, 1,'SM-18277', 3, 6.99);
INSERT INTO LINE VALUES (1006, 2,'2232/QTY', 1, 109.92);
INSERT INTO LINE VALUES (1006, 3,'23109-HB', 1, 9.95);
INSERT INTO LINE VALUES (1006, 4,'89-WRE-Q', 1, 256.99);
INSERT INTO LINE VALUES (1007, 1,'13-Q2/P2', 2, 14.99);
INSERT INTO LINE VALUES (1007, 2,'54778-2T', 1, 4.99);
INSERT INTO LINE VALUES (1008, 1,'PVC23DAT', 5, 5.87);
INSERT INTO LINE VALUES (1008, 2,'WR3/TT3', 3, 119.95);
INSERT INTO LINE VALUES (1008, 3,'23109-HB', 1, 9.95);
Vendor Table
INSERT INTO VENDOR VALUES (21225,'Bryson, Inc.', 'Smithson',
'615', '223-3234','TN','Y');
INSERT INTO VENDOR VALUES (21226,'SuperLoo, Inc.',
'Flushing','904', '215-8995','FL','N');
INSERT INTO VENDOR VALUES (21231,'DE Supply', 'Singh', '615',
'2283245', 'TN', 'Y');
INSERT INTO VENDOR VALUES (21334,'Gomez Bros.',
'Ortega','615','889-2546','KY','N');
INSERT INTO VENDOR VALUES (22567,'Dome Supply',
'Smithson','901','678-1419','GA','N');
INSERT INTO VENDOR VALUES
(23119,'RandsetsLtd.','Anderson','901','678-3998','GA','Y');
INSERT INTO VENDOR VALUES (24004,'BrackmanBros.', 'Browning',
'615', '228-1410','TN','N');
INSERT INTO VENDOR VALUES (24288,'ORVDA, Inc.',
'Hakford','615','898-1234','TN','Y');
INSERT INTO VENDOR VALUES (25443,'BK, Inc.',
'Smithson','904','227-0093','FL','N');
INSERT INTO VENDOR VALUES
(25501,'DamalSupplies','Smythe','615','890-3529','TN','N');
INSERT INTO VENDOR VALUES (25595,'Rubicon
Sis.','Orton','904','456-0092','FL','Y');
Product Table
INSERT INTO PRODUCT VALUES ('11QER/31','Power painter, 15 psi,
3nozzle','12/2/96', 8 , 5 ,109.99, 0.00, 25595);
INSERT INTO PRODUCT VALUES ('13-Q2/P2','7.25-in. pwr. Saw
blade','11/12/96', 32, 15, 14.99, 0.05, 21344);
INSERT INTO PRODUCT VALUES ('14-Q1/L3','9.00-in. pwr. Saw
blade','11/12/96', 18, 12, 17.49, 0.00, 21344);
INSERT INTO PRODUCT VALUES ('156-QQ2','Hrd. Cloth, 1/4-in.,
2x50','8/14/96',15,8,39.95,0.00,23119);
INSERT INTO PRODUCT VALUES ('1558-QW1','Hrd. Cloth, 1/2-in.,
3x50','8/14/96', 23, 5, 43.99, 0.00, 23119);
INSERT INTO PRODUCT VALUES ('2232/QTY','BD jigsaw, 12-in,
blade','10/29/96', 8, 5, 109.92, 0.05, 24288);
INSERT INTO PRODUCT VALUES ('2232/QWE','BD jigsaw, 8-in,
blade','9/23/96', 6, 5, 99.87, 0.05, 24288);
INSERT INTO PRODUCT VALUES ('2238/QPD','BD cordless drill, 1/2-
in.','10/19/96', 12, 5, 38.95, 0.05, 25595);
INSERT INTO PRODUCT VALUES ('23109-HB','Claw hammer','11/19/96',
23, 10, 9.95, 0.10, 21225);
INSERT INTO PRODUCT VALUES ('23114-AA','Sledge hammer, 12
lb.','12/1/96', 8, 5, 14.40, 0.05, null);
INSERT INTO PRODUCT VALUES ('54778-2T','Rat-tail file, 1/8-in.
fine','6/14/96', 43, 20, 4.99, 0.00, '21344');
INSERT INTO PRODUCT VALUES ('89-WRE-Q','Hicut chain saw, 16
in.','7/6/96',11,5,256.99,0.05,'24288');
INSERT INTO PRODUCT VALUES ('PVC23DAT','PVC pipe, 3.5-in., 8-
ft','12/19/96', 188, 75, 5.87, 0.00, null);
INSERT INTO PRODUCT VALUES ('SM-18277','1.25-in. metal screw,
25','11/28/96', 172, 75, 6.99, 0.00, '21225');
INSERT INTO PRODUCT VALUES ('SW-23116','2.5-in. wd. screw,
50','9/23/96', 237, 100, 8.45, 0.00, '21231');
INSERT INTO PRODUCT VALUES ('WR3/TT3','Steel matting,
4''x8''x1/6", .5" mesh','11/16/96', 18, 5, 119.95, 0.10,
'25595');
Invoice Table
INSERT INTO INVOICE VALUES (1001, 10014,'11/18/1996');
INSERT INTO INVOICE VALUES (1002, 10011,'11/18/1996');
INSERT INTO INVOICE VALUES (1003, 10012,'11/18/1996');
INSERT INTO INVOICE VALUES (1004, 10011,'11/19/1996');
INSERT INTO INVOICE VALUES (1005, 10018,'11/19/1996');
INSERT INTO INVOICE VALUES (1006, 10014,'11/19/1996');
INSERT INTO INVOICE VALUES (1007, 10015,'11/19/1996');
INSERT INTO INVOICE VALUES (1008, 10011,'11/19/1996');

3) Generate a listing of all purchases made by the customers,


using the output shown in the next table as your guide

CUS_CODE INV_NUMBER INV_DATE P_DESCRIPT LINE_ LINE_PRICE


UNITS

10011 1002 11/18/96 Rat-tail file, 1/8-in. 2 $4.99


10011 1004 11/19/96 fine
Claw hammer 2 $9.95
10011 1004 11/19/96 Rat-tail file, 1/8-in. 3 $4.99
10011 1008 11/19/96 fine hammer
Claw 1 $9.95
10011 1008 11/19/96 PVC pipe, 3.5-in, 8-ft 5 $5.87
10011 1008 11/19/96 Steel matting, 3 $119.95
10012 1003 11/18/96 4'x8'x1/6", .5"
7.25-in. pwr. mesh
Saw blade 5 $14.99
10012 1003 11/18/96 B&D jigsaw, 12-in. blade 1 $38.95
10012 1001 11/18/96 Hrd. Cloth, 1/4-in., 1 $39.95
10014 1001 11/18/96 2x50
7.25-in. pwr. Saw blade 1 $14.99
10014 1006 11/18/96 Claw hammer 1 $9.95
10014 1006 11/19/96 1.25-in. metal screw, 25 3 $6.99
10014 1006 11/19/96 B&D jigsaw, 12-in. blade 1 $109.92
10014 1006 11/19/96 Claw hammer 1 $9.95
10014 1006 11/19/96 Hicut chain saw, 16-in. 1 $256.99
10015 1007 11/19/96 7.25-in. pwr. Saw blade 2 $14.99
10015 1007 11/19/96 Rat-tail file, 1/8-in. 1 $4.99
10018 1005 11/19/96 fine
PVC pipe, 3.5-in, 8-ft 12 $5.87

Answer:

Select c.Cus_Code, i.INV_NUMBER, i.INV_DATE, (select


P_DESCRIPT from product where p_code = l.p_code) as
P_DESCRIPT, l.LINE_UNITS, l.LINE_PRICE
From Customer c
INNER JOIN Invoice i
On c.cus_code = i.cus_code
INNER JOIN Line l
On i.inv_number = l.inv_number
Order by c.cus_code asc, i.inv_number asc,
P_DESCRIPT;

Using the output shown in the next table as your guide, generate
the listing of customer purchases, including the subtotals for
each of the invoice line numbers.

CUS_CODE INV_NUMBER INV_DATE P_DESCRIPT Units Unit Price Subtotal


Bought

10011 1002 11/18/96 Rat-tail file, 1/8- 2 $4.99 $9.98


10011 1004 11/19/96 in.
Clawfine
hammer 2 $9.95 $19.90
10011 1004 11/19/96 Rat-tail file, 1/8- 3 $4.99 $14.97
10011 1008 11/19/96 in.
Clawfine
hammer 1 $9.95 $9.95
10011 1008 11/19/96 PVC pipe, 3.5-in, 8- 5 $5.87 $29.35
10011 1008 11/19/96 ft
Steel matting, 3 $119.95 $359.85
10012 1003 11/18/96 4'x8'x1/6",.5" mesh
7.25-in. pwr. Saw 5 $14.99 $74.95
10012 1003 11/18/96 blade
B&D jigsaw, 12-in. 1 $38.95 $38.95
10012 1001 11/18/96 blade
Hrd. Cloth, 1/4-in., 1 $39.95 $39.95
10014 1001 11/18/96 2x50
7.25-in. pwr. Saw 1 $14.99 $14.99
10014 1006 11/18/96 blade
Claw hammer 1 $9.95 $9.95
10014 1006 11/19/96 1.25-in. metal screw, 3 $6.99 $20.97
10014 1006 11/19/96 25 jigsaw, 12-in.
B&D 1 $109.92 $109.92
10014 1006 11/19/96 blade
Claw hammer 1 $9.95 $9.95
10014 1006 11/19/96 Hicut chain saw, 16- 1 $256.99 $256.99
10015 1007 11/19/96 in.
7.25-in. pwr. Saw 2 $14.99 $29.98
10015 1007 11/19/96 blade
Rat-tail file, 1/8- 1 $4.99 $4.99
10018 1005 11/19/96 in.
PVC fine
pipe, 3.5-in, 8- 12 $5.87 $70.44
ft

Answer:

Select c.Cus_Code, i.INV_NUMBER, i.INV_DATE, (select


P_DESCRIPT from product where p_code = l.p_code) as
P_DESCRIPT, l.LINE_UNITS as "Units Bought", l.LINE_PRICE as
"Unit Price", (l.LINE_UNITS * l.LINE_PRICE) as "Sub Total"
From Customer c
INNER JOIN Invoice i
On c.cus_code = i.cus_code
INNER JOIN Line l
On i.inv_number = l.inv_number
Order by c.cus_code asc, i.inv_number asc, P_DESCRIPT;

4) Modify the query used in problem 4 to produce the summary


shown next.

CUS_CODE CUS_BALANCE Total Purchases

10011 $0.00 $444.00


10012 $345.86 $153.85
10014 $0.00 $422.77
10015 $0.00 $34.97
10018 $216.55 $70.44

Answer:

Select c.Cus_Code, c.cus_Balance, sum(l.LINE_UNITS *


l.LINE_PRICE) as "Total Purchases"
From Customer c, invoice i, line l
Where c.cus_code = i.cus_code and
i.inv_number = l.inv_number
Group by c.cus_code, c.cus_Balance
Order by c.cus_code;

5) Modify the query in problem 5 to include the number of


individual product purchase made by each customer. (In other
words, if the customers invoice is based on three products,
one per LINE_NUMBER, you are counting three product
purchases. If you examine the original invoice data, you will
note that customer 10011 generated three invoices which
contained a total of six lines, each representing a product
purchase.) Your output values must match those shown next.

CUS_CODE CUS_BALANCE Total Number of Purchases


Purchases

10011 $0.00 $444.00 6


10012 $345.86 $153.85 3
10014 $0.00 $422.77 6
10015 $0.00 $34.97 2
10018 $216.55 $70.44 1

Answer:

Select c.Cus_Code, c.cus_Balance, sum(l.LINE_UNITS *


l.LINE_PRICE) as "Total Purchases", count(l.LINE_number) as
"Number of Purchases"
From Customer c, invoice i, line l
Where c.cus_code = i.cus_code and
i.inv_number = l.inv_number
Group by c.cus_code, c.cus_Balance
Order by c.cus_code;

6) Use nested query to compute the average purchase amount per


product made by each customer. Hint: use the results of
problem 6 as the basis for this query. Your output values
must match those shown next. Note that the average purchase
amount is equal to the total purchases divided by the number
of purchases.

CUS_CODE CUS_BALANCE Total Number of Average Purchase


Purchases Purchases Amount

10011 $0.00 $444.00 6 $74.00


10012 $345.86 $153.85 3 $51.28
10014 $0.00 $422.77 6 $70.46
10015 $0.00 $34.97 2 $17.49
10018 $216.55 $70.44 1 $70.44

Answer:

Select c.Cus_Code, c.cus_Balance, sum(l.LINE_UNITS *


l.LINE_PRICE) as "Total Purchases", count(l.LINE_number) as
"Number of Purchases",
Round (((sum(l.LINE_UNITS *
l.LINE_PRICE))/count(l.LINE_number)),2) as "Average Purchase
Amount"
From Customer c, invoice i, line l
Where c.cus_code = i.cus_code and
i.inv_number = l.inv_number
Group by c.cus_code, c.cus_Balance
Order by c.cus_code;

7) Create a query to produce the total purchase per invoice to


generate the results shown next. The invoice total is the sum
of the product purchases in the LINE that correspond to the
INVOICE.

INV_NUMBER Invoice
Total

1001 $24.94
1002 $9.98
1003 $153.85
1004 $34.87
1005 $70.44
1006 $397.83
1007 $34.97
1008 $399.15

Answer:

Select inv_number, sum(l.LINE_UNITS * l.LINE_PRICE) as


"Invoice Total"
From line l
Group by l.inv_number
Order by l.inv_number;
Use a query to show the invoices and invoice totals as shown
next (Group by the CUS_CODE)

CUS_CODE INV_NUMBER Invoice Totals

10011 1002 $9.98


10011 1004 $34.87
10011 1008 $399.15
10012 1003 $153.85
10014 1001 $24.94
10014 1006 $397.83
10015 1007 $34.97
10018 1005 $70.44

Answer:
Select (select cus_code from invoice where inv_number =
l.inv_number) as cus_code , inv_number, sum(l.LINE_UNITS *
l.LINE_PRICE) as "Invoice Total"
From line l
Group by l.inv_number
Order by cus_code;

8) Write a query to produce the number of invoices and the total


purchase amounts by customer, using the output shown next as
your guide. (Compare this summary to the results shown in
problem 9.)

CUS_CODE Number of Total Customer Purchases


Invoices

10011 3 $444.00
10012 1 $153.85
10014 2 $422.77
10015 1 $34.97
10018 1 $70.44
Answer:
Select c.Cus_Code, (select count (inv_number) from invoice
where cus_code = c.cus_code) as "Number of
Invoices",sum(l.LINE_UNITS * l.LINE_PRICE) as "Total Customer
Purchases"
From Customer c, invoice i, line l
Where c.cus_code = i.cus_code and
i.inv_number = l.inv_number
Group by c.cus_code
Order by c.cus_code;

Using problem 10s query results as your basis, write a query


to generate the total number of invoices, the invoice total for
all of these invoices, the smallest invoice amount, the largest
invoice amount, and the average of all invoices. Hint: Check the
figure output in problem 10 and note that the Average sale shown
in the figure below is generated by dividing the SUM of the total
customer purchases in problem 10 by the SUM of the number of
invoices. Your output must match the following.
Total # of Total Minimum Largest Average Sale
Invoice Sales Sale Sale

8 $1,126.03 $34.97 $444.00 $225.21

Answer:
Select (select count (inv_number) from invoice) as "Total # of
Invoice",
(Select sum (LINE_UNITS * LINE_PRICE) from line) as
"Total Sales",
(Select Min (sum (l.LINE_UNITS * l.LINE_PRICE)) from
Customer c, invoice i, line l where c.cus_code = i.cus_code
and i.inv_number = l.inv_number group by c.cus_code) as
"Minimum Sale",
(Select Max (sum (l.LINE_UNITS * l.LINE_PRICE)) from
Customer c, invoice i, line l where c.cus_code = i.cus_code
and i.inv_number = l.inv_number group by c.cus_code) as
"Maximum Sale",
(Select AVG (sum (l.LINE_UNITS * l.LINE_PRICE)) from
Customer c, invoice i, line l where c.cus_code = i.cus_code
and i.inv_number = l.inv_number group by c.cus_code) as
"Average Sale"
From dual;

9) List the balance characteristics of the customers who made


purchases during the current invoice cycle-that is, for the
customers who appear in the INVOICE table. The results of the
query are shown next.
CUS_CODE CUS_BALANCE

10011 $0.00
10012 $345.86
10014 $0.00
10015 $0.00
10018 $216.55

Answer:
Select c.Cus_Code, c.cus_Balance
From Customer c, invoice i, line l
Where c.cus_code = i.cus_code and
i.inv_number = l.inv_number
Group by c.cus_code, c.cus_Balance
Order by c.cus_code;

10) Using the results of the query created for problem 12,
provide the summary of customer balance characteristics as
shown next.

Minimum Balance Maximum Balance Average


balance

$0.00 $345.86 $112.48

Answer:
Select Min (x.cus_balance) as "Minimum Balance",
MAX (x.cus_balance) as "Maximum Balance",
AVG (x.cus_balance) as "Average Balance"
From (select c.cus_Balance from Customer c, invoice i, line l
where c.cus_code = i.cus_code and i.inv_number = l.inv_number
group by c.cus_Balance) x;

11) Create a query to find the customer balance characteristics


for all customers, including the total outstanding balance.
The results of this query are shown in the next table.

Total Minimum Maximum Average balance


balance balance balance

$2,089.28 $0.00 $768.93 $208.93


Answer:
Select SUM (cus_balance) as "Total Balance",
Min (cus_balance) as "Minimum Balance",
MAX (cus_balance) as "Maximum Balance",
AVG (cus_balance) as "Average Balance"
From customer;

12) Find the listing of customers who did not make purchases
during the invoicing period. Your output must match the next
table.

CUS_CODE CUS_BALNCE
10010 0
10013 536.75
10016 221.19
10017 768.93
10019 0

Answer:
Select c.Cus_Code, c.cus_Balance
From Customer c
Left JOIN Invoice i
On c.cus_code = i.cus_code
Left JOIN Line l
On i.inv_number = l.inv_number
WHERE i.inv_number is NULL
Group by c.Cus_code, c.cus_balance
Order by c.cus_code;

13) Now find the customer balance summary for all customers
who have not made purchases during the current invoicing
period. The results are shown next.

SUM(CUS_BALANCE) MIN(CUS_BALANCE) MAX(CUS_BALANCE) AVG(CUS_BALANCE)


1526.87 0 768.93 305.374

Answer:
Select SUM (x.cus_balance) as "SUM (CUS_BALANCE)",
Min (x.cus_balance) as "MIN (CUS_BALANCE)",
MAX (x.cus_balance) as "MAX (CUS_BALANCE)",
AVG (x.cus_balance) as "AVG (CUS_BALANCE)"
From
(Select c.Cus_Code, c.cus_Balance from Customer c left JOIN
Invoice i on c.cus_code = i.cus_code left JOIN Line l on
i.inv_number = l.inv_number WHERE i.inv_number is NULL group
by c.Cus_code, c.cus_balance order by c.cus_code) x;

14) Create a query to produce the summary of the value of products


currently in inventory. Note that the value of each product is
produced by the multiplication of the units currently in inventory
and the unit price. The results of this query are shown next.

P_DESCRIPT P_ONHAND P_PRICE Subtotal

Power painter, 15 Psi, 3- 8 $109.99 $879.92


Nozzle
7.25-in. pwr. Saw blade 32 $14.99 $479.68
9.00-in. pwr. Saw blade 18 $17.49 $314.82
Hrd. Cloth, 1/4-in., 2x50 15 $39.95 $599.25
Hrd. Cloth, 1/2-in., 3x50 23 $43.99 $1,011.77
B&D jigsaw, 12-in. blade 8 $109.92 $879.36
B&D jigsaw, 8-in. blade 6 $99.87 $599.22
B&D cordless drill, 1/2-in. 12 $38.95 $467.40
Claw hammer 23 $9.95 $228.85
Sledge hammer, 12 lb. 8 $14.40 $115.20
Rat-tail file, 1/8-in. fine 43 $4.99 $214.57
Hicut chain saw, 16 in. 11 4256.99 $2,826.89
PVC pipe, 3.5-in., 8-ft 188 $5.87 $1,103.56
1.25-in. metal screw, 25 172 $6.99 $1,202.28
2.5-in. wd. Screw, 50 237 $8.45 $2,002.65
Steel matting, 4'x8'x1/6", .5 18 $119.95 $2,159.10
5" mesh
Answer:
Select P_DESCRIPT, P_onhand, p_price, (P_onhand*P_price) as
"Sub Total" from product;

Using results of the query created in problem 17, find the


total value of the product inventory. The results are shown
next.
Total value of Inventory
$15,084.52

Answer:
Select SUM (x.P_onhand * x.P_price) as "Total value of
Inventory" from
(Select P_DESCRIPT, P_onhand, p_price from product) x

You might also like