ANSWER
ANSWER
-- a) List the name of the customers who have taken a loan for more than Rs.50,000
SELECT Custname
FROM Customer
WHERE Custid IN (SELECT Custid FROM Loan WHERE Amount > 50000);
-- d) Create a procedure to print the Amount and Custid when the Loanid is given as input.
Handle Exceptions.
DELIMITER //
Empname VARCHAR(100),
Sal DECIMAL(10,2),
Deptno INT,
);
Dname VARCHAR(100),
Loc VARCHAR(100),
DeptmanagerId INT,
);
SELECT
Deptno,
COUNT(EmpId) AS NumEmployees,
AVG(Sal) AS AvgSalary
FROM Employee
GROUP BY Deptno;
-- b) List the employee name, department name, and the salary of all the employees
SELECT
e.Empname,
d.Dname AS DepartmentName,
e.Sal
FROM Employee e
-- c) Display the Employee name and the respective department manager name
SELECT
e.Empname AS EmployeeName,
d1.Empname AS DepartmentManagerName
FROM Employee e
-- d) Create a function to return the salary of the employee when Empid is given as input
parameter. Handle Exceptions.
DELIMITER //
BEGIN
FROM Employee
ELSE
RETURN emp_salary;
END IF;
END//
DELIMITER ;
Name VARCHAR(100),
Dept VARCHAR(100),
Bookid INT,
Accdate DATE,
);
Book_name VARCHAR(100),
Author VARCHAR(100),
Publication VARCHAR(100),
Price DECIMAL(10,2)
);
-- a) List the name of the user who accessed the costliest book
SELECT u.Name
FROM User u
JOIN Book b ON u.Bookid = b.Bookid
FROM User
GROUP BY Userid;
SELECT *
FROM Book
-- d) Write a PL/SQL program to print the details of the book when Bookid is given as input.
Handle appropriate exceptions.
v_Book_name Book.Book_name%TYPE;
v_Author Book.Author%TYPE;
v_Publication Book.Publication%TYPE;
v_Price Book.Price%TYPE;
BEGIN
FROM Book
END;
BEGIN
END;
---------------------------------------------------------------------------------------------------------------------------
4. -- Create Customer table
Custname VARCHAR(100),
Addr VARCHAR(255),
phno VARCHAR(20),
panno VARCHAR(20)
);
Amount DECIMAL(10,2),
Interest DECIMAL(5,2),
Custid INT,
);
-- Create Account table
Accbal DECIMAL(10,2),
Custid INT,
);
SELECT Accbal
FROM Account
-- b. Update the interest with 1% when Accbal of the Custid > 50% of Loan Amount
UPDATE Loan l
WHERE EXISTS (
SELECT 1
FROM Account a
AND a.Accbal > (SELECT Amount * 0.5 FROM Loan WHERE Custid = l.Custid)
);
FROM Account a
BEGIN
END IF;
END//
DELIMITER ;
Custname VARCHAR(100),
phno VARCHAR(20),
pan VARCHAR(20),
DOB DATE
);
Amount DECIMAL(10,2),
Custid INT,
Amount DECIMAL(10,2),
Custid INT,
);
-- a) List the Custid of the customers who have both homeloan and vehicle loan
SELECT Custid
FROM Customer
-- b) List the Custid of the customers who do not have any loan
SELECT Custid
FROM Customer
-- c) Create a view with customerid, Customer name, and total loan amount (HomeLoan and
VehicleLoan)
FROM Customer c
DELIMITER //
BEGIN
SELECT CONCAT('New Home Loan details added: Amount = ', loan_amount, ', Customer Name
= ', cust_name) AS Message;
END//
DELIMITER ;
---------------------------------------------------------------------------------------------------------------------------
6. -- Create Marks table
Name VARCHAR(100),
Dept VARCHAR(100),
Subj1 INT,
Subj2 INT,
Subj3 INT,
Total INT
);
-- a) Add a column Total in student table and update the Total field with the sum of 3 subject
Marks
UPDATE Marks
FROM Marks
SELECT Name
FROM Marks
-- d) Write a PL/SQL program to display the report sheet of the students using cursors
-- Assuming you want to display all the data in the Marks table
CURSOR MarksCursor IS
SELECT *
FROM Marks;
v_Regno Marks.Regno%TYPE;
v_Name Marks.Name%TYPE;
v_Dept Marks.Dept%TYPE;
v_Subj1 Marks.Subj1%TYPE;
v_Subj2 Marks.Subj2%TYPE;
v_Subj3 Marks.Subj3%TYPE;
v_Total Marks.Total%TYPE;
BEGIN
OPEN MarksCursor;
LOOP
FETCH MarksCursor INTO v_Regno, v_Name, v_Dept, v_Subj1, v_Subj2, v_Subj3, v_Total;
DBMS_OUTPUT.PUT_LINE('Regno: ' || v_Regno || ', Name: ' || v_Name || ', Dept: ' || v_Dept || ',
Subj1: ' || v_Subj1 || ', Subj2: ' || v_Subj2 || ', Subj3: ' || v_Subj3 || ', Total: ' || v_Total);
END LOOP;
CLOSE MarksCursor;
END;
BEGIN
DisplayReportSheet;
END;
stu_name VARCHAR(100),
DOB DATE,
address VARCHAR(255),
city VARCHAR(100)
);
mark1 INT,
mark2 INT,
mark3 INT,
total INT
);
-- a) Alter the table mark_details to add a column average with data type as long
ADD average FLOAT; -- Assuming "long" is not available in the supported data types, I used
FLOAT instead
FROM stu_details;
-- c) Using alter command drop the column address from the table stu_details
-- d) Write a PL/SQL program to find the sum & average marks of all the students using
procedures
total_marks INT := 0;
total_students INT := 0;
average_marks FLOAT;
CURSOR MarksCursor IS
BEGIN
total_students := total_students + 1;
END LOOP;
ELSE
END IF;
END;
BEGIN
CalculateMarksSummary;
END;
Ename VARCHAR(100),
Job VARCHAR(100),
MgrId INT,
DoB DATE,
DoJ DATE,
Sal DECIMAL(10,2),
Comm DECIMAL(10,2),
Deptno INT,
);
Dname VARCHAR(100),
Deptno INT PRIMARY KEY,
Dloc VARCHAR(100)
);
-- a) Display the Emp no, name, salary, and experience of each employee ordered by salary
(highest to lowest)
FROM Employee
SELECT Ename
FROM Employee e
SELECT Ename
FROM Employee
-- d) Write a PL/SQL function to display the details of the employee when Employee no given as
input. Handle Exceptions
DECLARE
v_details VARCHAR(500);
BEGIN
SELECT CONCAT('Empno: ', Empno, ', Ename: ', Ename, ', Job: ', Job, ', MgrId: ', MgrId, ', DoB: ',
DoB, ', DoJ: ', DoJ, ', Sal: ', Sal, ', Comm: ', Comm, ', Deptno: ', Deptno)
INTO v_details
FROM Employee
WHERE Empno = p_Empno;
ELSE
RETURN v_details;
END IF;
EXCEPTION
END;
Name VARCHAR(100),
Basicpay DECIMAL(10,2),
DOB DATE,
Dept VARCHAR(100)
);
p_EmployeeId IN INT,
p_DA_percent IN DECIMAL,
p_HRA_percent IN DECIMAL,
p_TAX_percent IN DECIMAL,
p_DED_percent IN DECIMAL
) AS
v_BasicPay DECIMAL(10,2);
v_DA DECIMAL(10,2);
v_HRA DECIMAL(10,2);
v_TAX DECIMAL(10,2);
v_DED DECIMAL(10,2);
v_NetPay DECIMAL(10,2);
BEGIN
-- Print payslip
DBMS_OUTPUT.PUT_LINE('-----------------------------------------------------');
Votername VARCHAR(100),
Gender VARCHAR(10),
Boothid INT,
Checkvote INT,
);
Location VARCHAR(255),
BIncharge VARCHAR(100)
);
FROM Voter
GROUP BY Boothid;
FROM Voter
FROM Voter
WHERE Checkvote = 1;
FROM Booth b
-- d) Write a function to return the percentage of poll in a booth when boothid is given as input.
Handle Exceptions
v_TotalVoters INT;
v_VotersVoted INT;
v_Percentage DECIMAL;
BEGIN
SELECT COUNT(*) INTO v_VotersVoted FROM Voter WHERE Boothid = p_BoothId AND
Checkvote = 1;
IF v_TotalVoters = 0 THEN
RETURN 0;
ELSE
RETURN v_Percentage;
END IF;
EXCEPTION
RETURN NULL;
END;