The questions can come in any order, so make sure you are selecting right option for all questions.
1. Create a function named 'findTotalUnit' which takes meterNumber as its input parameter with varchar as its datatype and it returns the average total units consumed by the meter number for a month.
Hints:
Function name: findTotalUnit
Input parameter: meterNumber is type of varchar
Design Rules:
If the meterNumber passed as input matches with the meter_number in the table then it returns the average total units for the given input.
create or replace function findTotalUnit(meterNumber in varchar2)
return varchar is
avgUnits varchar(255);
begin
select avg(total_units)
into avgUnits
from bill
where meter_id in (
select id
from meter
where meter_number = meterNumber)
group by meter_id;
return avgUnits;
end;
/
2. Create a function named 'findCountofBuildingType' which have the connectionName as its input parameter and it returns the count of the building type for the given input.
Hints:
Function Name: findCountofBuildingType
Input parameter: connectionName is type of varchar
Design Rules:
If the connectionName passed as input matches with the connection_name in the table then it returns the count of the building types for given input.
create or replace function findCountofBuildingType(connectionName in varchar2)
return int is
cntBldng int;
begin
select count(name) into cntBldng
from building_type
where connection_type_id =(
select id
from electricity_connection_type
where connection_name = connectionName);
return cntBldng;
end;
/
3. Create a function named 'findBuildingType' which takes meterNumber as its input parameter and returns the corresponding building type for the given input.
Hints:
Function Name: findBuildingType
Input parameter: meterNumber is type of varchar
Design Rules:
If themeterNumber passedas input matches with the meter_number in the table then it returns the building_type for the given input.
create or replace function findBuildingType(meterNumber in varchar2)
return varchar is
name varchar(255);
begin
select name into name
from building_type
where id = (
select building_type_id
from building
where id = (
select building_id
from meter
where meter_number = meterNumber));
return name;
end;
/
4. Create a function named 'showPayedOrNot' which takes meterNumber as its input parameter and returns the String "Payed" or "Not Payed" from the bill corresponding to the given input.
Hints:
Function name: showPayedOrNot
Input parameter: meterNumber is type of varchar
Design Rules:
1) If the meterNumber passed as input matches with the meter_number in the table, if 'is_payed' value get as '0' then it returns 'Payed' for the given input.
2) If the meterNumber passed as input matches with the meter_number in the table, if 'is_payed' value get as '1' then it returns 'Not Payed' for the given input
create or replace function showPayedOrNot(meterNumber in varchar2)
return varchar is
paid varchar(255);
begin
select case when is_payed = 0 then 'Payed' else 'Not Payed' end into paid
from bill
where meter_id = (
select id
from meter
where meter_number = meterNumber);
return paid;
end;
/
5. Create a function named 'ownerHavingMaximumFineAmount' which returns the ownerName ofthe building who have maximum fine amount in the bill.
Hints:
Function Name: ownerHavingMaximumFineAmount
Input Parameter : none
create or replace function ownerHavingMaximumFineAmount
return varchar is
ownerName varchar(255);
begin
select owner_name into ownerName
from building
where id in (
select building_id
from meter
where id in (
select meter_id
from bill
where fine_amount in (
select max(fine_amount)
from bill)));
return ownerName;
end;
/