CS案例之PL/SQL Project database数据库
当前位置:以往案例 > >CS案例之PL/SQL Project database数据库
2017-11-22

CS348 – Project 2 PL/SQL
Project Due in Blackboard: 11:59PM, Thursday April 5, 2018.


Any Late Day will be penalized by 10% of the grade until a maximum of 5 days, after which the project will not be accepted.

Overview: In this project, you will perform some common database operations. The schema is slightly modified from the one used in Project 1, so make sure to use the scripts provided with this package. You MUST use PL/SQL for this project. You should use your Purdue Oracle account to create and test the queries. Submit your answers via Blackboard.


Note: The numbers should be accurate to 2 decimal places. (For instance, 90, 90.5 and 90.50 are all acceptable. But 90.555 is unacceptable.)


Customer(CustomerId, FirstName, LastName, Address, PhoneNo, Age) Supplier(SupplierId, FirstName, LastName, Address, PhoneNo) Product(ProductId, ProductName, Category, SupplierId, ProductDescription) Inventory(ProductId, TotalStock, LastUpdatedOn)

Orders(OrderId, CustomerId, OrderDate, Status) OrderItems(OrderId, ProductId, Quantity, UnitPrice, Discount)


Step 1: Drop the tables if existing:


SQL > @droptales.sql


Step 2 : Then create the new tables using script tables.sql SQL > @tables.sql

Step 3 : Then, add the data to the database using Script data.sql. SQL > @data.sql

Step 4: PL/SQL Procedures: In this part, you are going to use PL/SQL(Oracle’s procedural extension to SQL) to write procedures to process data.

Create a file named procedures.sql. The first line of this file should be :


set serveroutput on size 32000

Your file should contain code to create and run six procedures: Your file should look something like this:




/* create the procedure */
create or replace procedure Pro_order_status as
/* declarations */ begin
/* code */ end;
/
/* actually run the procedure */ begin
Pro_order_status; end;
/

create or replace procedure Pro_prod_report as begin
/*code*/ end;
/

begin
Pro_prod_report; end; /


Procedures1. Pro_order_status : Generate the report based on state of the orders for last month and last year. Find the total number of orders in delayed and shipped states over last month (last 30 days) and last year(last 12 months). These dates are matched with orderdate in orders table. The output should be as follows :


DURATION DELAYED_ORDERS SHIPPED_ORDERS

————————————————————————————————

LAST_MONTH

560

100

LAST_YEAR

1187

658

2. Pro_prod_report: Generate a report based on inventory of the products into 3 categories

a. Available (more than 10 units available)

b. Critical (10 or less units available)

c. Out of stock.

Then, print the product with supplier details of out of stock products (sorted by product name ascending order). The output should be as follows :


INVENTORY REPORT

AVAILABLE CRITICAL OUT OF STOCK



———————————————————————————-

450

32

7

Out of stock products Product Id


Product Name


Supplier Name


Supplier Phone No.

—————————————————————————————————————–

1

Iphone

ABC

8912899911

4

Pixel

XYZ

0987179987


3. Pro_age_categ: Find the top category ordered by customers of different age groups. This represents the hit category for each age group and helps in targeted advertising. Top category can be calculated by comparing the number of product units (total quantity sold) of each category ordered. Consider bins of size 10 for different ages. For example, a customer of age 45 will fall in bin {>40, <= 50}. The number of bins depends on the age groups of the customers available. If the lowest age available is 32 and largest is 67, then there will be 4 bins as {>30, <=40}, {>40, <=50}, {>50, <=60} and {>60, <=70}. The bin size is fixed but the number of bins depends on the range of age available.


HIT CATEGORIES

>30, <=40 >40, <=50 >50, <=60 >60, <=70

——————————————————————————————————

Electronics Clothing Home Appliances Clothing

4. Pro_category_info: Generate a report to display the details about each category. These details include the number of units of that category ordered, the average unit price of the products in that category, the average discounted amounts given. Notice that the discounts given in the data is in percentage while the report wants the average discount in whole amount. The average prices and average discounts should be formatted to 2 decimal places. Order the result by the total units sold in descending order. The computation of the averages should take the quantity into account.


CATEGORY REPORT

CATEGORY TOTAL_UNITS AVG_PRICE AVG_DISCOUNT

—————————————————————————————————————

Clothing

130

98.00

6.45

Electronics

32

459.00

45.00

5. Pro_search_customer: Given a customerid, find the details about that customer.


Enter CustomerID : 5 (User Input ‘5’ given)

Customer Name : CustFN CustLN (concatenation of first name and last name) Customer Age : 32

Phone No : 12345667



No. of order placed : 6

Notice that if the customer is not found, then print as follows : Enter CustomerID : 6 (User Input ‘6’ given)

Customer with id 6 not found.

6. Pro_search_supplier: Given a supplierid, find the details about that supplier and the products provided by the supplier.


Enter Supplier Id : 1 (User Input ‘1’ given)

Supplier Name : SupplFN SuppLN (Concatenation of first name and last name separated by one blank space)

Supplier Phone No : 12344

Supplier Address : West Lafayette, 47906 No. of products supplied : 6

Products :

Product Id Product Name

————————————————-

4 Iphone X

78 Black Shoe


在线提交订单