Assignment 1;Due date;25 Sep 2014;Value;95%;Please submit the CODE and OUTPUT as specified for all programming questions. You will submit this assignment electronically in the ASSESSMENT area of the Study Desk.;In this assignment, you will use the CAR HIRE database. The CAR HIRE database including appropriate data will be made available on the USQ Oracle server. You can query these tables as if they are in your own schema but you are not permitted to insert or update data in these tables. The specification for the CAR HIRE database is as follows;The table descriptions appear below, including the column names, datatypes and the meanings for values in the columns. Familiarise yourself with the tables and the data.;Important Questions Restrictions.;A number of questions will impose which statements are allowed in the solution. They usually have to do with restricting the type of aggregate functions you are allowed to use for the solution. For example, they might specify that you are not to use the SUM function but instead sum the values using the loop operations. Please follow the restrictions closely. They are in place to make you better understand the operations and execution of the PL/SQL. You will be penalised for not following the restrictions.;Please read the questions carefully and make sure you format the output as requested.;I_CAR;I_CARGROUP;I_MODEL;I_CUSTOMER;I_BOOKING;Question 1 (25 marks);Write an anonymous block that places a substitution variable (&) into a local variable of type varchar2. You will need to convert the types and round them to nearest tens unit. For example 84.4555 would be 84.5. You should check the value entered in the local variable and output different messages depending on the value provided. The anonymous block is a simple grade calculator with the following rules.;If value less than 44.5 output the following message ?Resulting Grade for VALUE marks is ?F??;If value is between 44.5 and 49.4 output the following message ?Resulting Grade for VALUE marks is ?IS??;If value is between 49.5 and 64.4 output the following message ?Resulting Grade for VALUE marks is ?C??;If value between 64.5 and 74.4 output the following message ?Resulting Grade for VALUE marks is ?B??;If value is between 74.5 and 84.4 output the following message ?Resulting Grade for VALUE marks is ?A??;If value is between 84.5 and 100 output the following message ?Resulting Grade for VALUE marks is ?HD??;If the value does not fall in the range of 0 - 100 print an error message ?ONLY MARKS BETWEEN 0 AND 100 ACCEPTED)?;Note: The ?VALUE? in the message is to be replaced by the value of the substitution local variable value.;Single quotes are required around the grade results.;Sample run and output;To be submitted;Structured documented code to solve the problem listed.;Sample execution screens captures with output for following test values;110, 44.45, 49.5, 70.07, 86.67;You will need to run your solution once for every test value and capture the resulting screen output.;Question 2 (25 marks);Write an anonymous block that meets the following specification;Using an explicit cursor, retrieve each row from the i_car table.;Create a local variable that inherits the structure of the i_car table (using %ROWTYPE attribute). Place each row returned into this variable.;Using an implicit cursor, calculate the number of bookings that belong to each car.;Display the car registration, car group name, model name and the number of bookings for all the cars that have two or more bookings.;If the car has no bookings sum up the number of cars without bookings.;At the end of the run display a message ?There are VALUE cars that have no bookings recorded?.;Note: The VALUE is to be replaced with the total number of cars found during the process without bookings. The VALUE needs to be calculates during the explicit cursor execution.;You can only use one COUNT() statement for your solution in the body of the anonymous block.;To be submitted;Structured documented code to solve the problem listed.;Screenshot of the output after executing your solution.;Question 3 (25 marks);Create a bound/host (or global) variable named G_NEWCOST.;Write an anonymous block that declares two local variables: A3_COST and B3_COST. The data types of these two variables should be the same as the data type of the column cost in i_car table. Also declare a constant called DEPRECIATION with value 15.25 to be used for deprecation calculation.;In your BEGIN section, write two SELECT queries to obtain value of the cost column where car_group_name is ?A3? and ?B3? and assign the corresponding values to A3_COST and B3_COST variables.;Now use the IF-THEN statement to compare the two variables to find out which one has a highest value. Calculate the new cost by using constant DEPRECIATION to calculate the new value (total cost * (100 - DEPRICATION)) to the higher value and assign the new value to bound/host variable G_NEWCOST.;Display a message in the following format from your code block: ?The car group CARGROUP has total cost of $TOTALCOST.XX and has been depreciated to $G_NEWCOST.XX?;The CARGROUP should display the highest car group (A3 or B3 depending on values).;The TOTALCOST will be the total calculated in the SELECT query statement.;G_NEWCOST will be the derived value after decreasing the cost with the DEPRECIATION value. Format the G_NEWCOST value to 2 decimal places.;The XX represent the decimal places in the format.;Using the PRINT command, output the value in the host variable (G_NEWCOST) after the anonymous block has run.;To be submitted;Structured documented code to solve the problem listed.;Output screenshot after running the code with the message as requested.;Output screenshot after executing the PRINT G_NEWCOST statement.;Question 4 (25 marks);Write a PL/SQL solution that displays the registration and the maximum and the minimum miles travelled by a car during the rental period for all the bookings where the booking has been paid for.;The output from the anonymous block will be two messages. One message will display the information for the maximum miles driven and one for the minimum miles driven in the following format.;?The maximum miles driven was MAXIMUM by car REGISTRATION over DAYS day?s?;?The minimum miles driven was MINIMUM by car REGISTRATION over DAYS day?s?;Where MAXIMUM is the maximum miles calculated from the bookings table.;MINIMUM is the minimum miles calculated in the bookings table.;DAYS is the rental_period for the maximum and minimum miles travelled in the booking table.;Your program must use at least one explicit cursor and must NOT use any aggregate functions, for example SUM, MAX, COUNT, etc.;(Hint: miles driven for each booking will need to be calculated. Only the bookings where the booking has been paid for should be processed. All the information for the program is located in the i_booking table);MARKING CRITERIA;The code produces the required output.;The code is appropriately structured and documented;The code addresses the specification.;The code provides a solution and covers every element in the specification.;The code has at least one explicit cursor;The code has no aggregate SQL functions.;The code adopts an optimal and sophisticated approach to PL/SQL.;To be submitted;Structured documented code to solve the problem listed.;Screenshot of the output after executing your solution.
Paper#65765 | Written in 18-Jul-2015Price : $46