0% found this document useful (0 votes)
44 views

SQL Queries

gggg

Uploaded by

Naksha Gowda
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views

SQL Queries

gggg

Uploaded by

Naksha Gowda
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 29

1.

Consider the following relation schema

Works(Pname,Cname,salary)

Lives(Pname,Street,City)

located_in (Cname, city)

Manager(Pname,Mgrname)

Write the SQL queries for the following

(i)Find the names of all persons who live in the city Bangalore.

SELECT Pname

FROM Lives

WHERE City = ‘Bangalore’;

(ii)Retrieve the names of all person of "Infosys" whose salary is between Rs .50000

SELECT Pname

FROM Works

WHERE Cname = ‘Infosys’

AND salary BETWEEN 50000;

iii)Find the names of all persons who lives and work in the same city

SELECT W.Pname

FROM Works W

JOIN Lives L ON W.Pname = L.Pname

JOIN located_in LI ON W.Cname = LI.Cname

WHERE L.City = LI.City;

iv)List the names of the people who work for “Tech M” along with the cities they live in.

SELECT W.Pname, L.City

FROM Works W

JOIN Lives L ON W.Pname = L.Pname

WHERE W.Cname = ‘Tech M’;


v)Find the average salary of “Infosys” persons

SELECT AVG(salary) AS average_salary

FROM Works

WHERE Cname = ‘Infosys’;

2. Consider the following COMPANY database (10 marks)

EMP(Name,SSN,Salary,SuperSSN,Dno)

DEPT(DNum,Dname,MgrSSN,Dno)

DEPT_LOC(Dnum,Dlocation)

DEPENDENT(ESSN,Dep_name,Sex)

WORKS_ON(ESSN,Pno,Hours)

PROJECT(Pname,Pnumber,Plocation,Dnum)

Write the SQL queries for the following

(i)Retrieve the name of the employee who works with same department as ravi

SELECT E1.Name

FROM EMP E1

JOIN EMP E2 ON E1.Dno = E2.Dno

WHERE E2.Name = 'Ravi' AND E1.Name != 'Ravi';

ii)Retrieve the number of dependents for an employee “Ravi”

SELECT COUNT(*) AS NumberOfDependents

FROM EMP E

JOIN DEPENDENT D ON E.SSN = D.ESSN

WHERE E.Name = ‘Ravi’;


iii)Retrieve the name of the managers working in location “DELHI”who has no female dependents

SELECT E.Name

FROM EMP E

JOIN DEPT D ON E.SSN = D.MgrSSN

JOIN DEPT_LOC DL ON D.DNum = DL.Dnum

WHERE DL.Dlocation = ‘DELHI’

AND NOT EXISTS (

SELECT 1

FROM DEPENDENT DEP

WHERE DEP.ESSN = E.SSN AND DEP.Sex = ‘F’

);

iv)List female employees from Dno=20 earning more than 50000

SELECT Name

FROM EMP

WHERE Dno = 20 AND Salary > 50000 AND Sex = ‘F’;

v)List “CSE” department details

SELECT *

FROM DEPT

WHERE Dname = ‘CSE’;

3. Consider the Movie database:

MOVIE(Title,Director,Movieyear,Rating)

ACTORS(Actor,Age)

ACTS(Actor,Title)

DIRECTORS(Director,DirectorsAge)

Write the following queries using SQL


(i)List the movies directed by “STEVEN ” after 2018

SELECT Title

FROM MOVIE

WHERE Director = ‘STEVEN’ AND Movieyear > 2018;

ii) List all the actors who are over 40 year old and worked in all movies directed by “JOHN”.

SELECT A.Actor

FROM ACTORS A

WHERE A.Age > 40

AND NOT EXISTS (

SELECT M.Title

FROM MOVIE M

WHERE M.Director = ‘JOHN’

AND NOT EXISTS (

SELECT AC.Actor

FROM ACTS AC

WHERE AC.Title = M.Title AND AC.Actor = A.Actor

);

iii) Find an actor who was casted in “maxim” movie.

SELECT Actor

FROM ACTS

WHERE Title = ‘maxim’;

iv) Find director and actor of the movie whose title starts with letter “A”.

SELECT M.Director, A.Actor

FROM MOVIE M

JOIN ACTS A ON M.Title = A.Title

WHERE M.Title LIKE ‘A%’;


v) List all female actresses.

SELECT Actor

FROM ACTRESSES;

Or can write as below

SELECT Actor

FROM ACTORS

WHERE Gender = ‘F’;

4.Write the sql queries for the following database schema:

Student(usn,name,branch,percentage)

Faculty(fid,fname,department,designation,salary)

Course(cid,cname,fid)

Enroll(cid,usn,grade)

(i)retrieve the names of all students enrolled for the course’CS_54”

SELECT S.name

FROM Student S

JOIN Enroll E ON S.usn = E.usn

WHERE E.cid = ‘CS_54’;

(ii) list all the departments having an average salary of the faculties above Rs.10,000

SELECT F.department

FROM Faculty F

GROUP BY F.department

HAVING AVG(F.salary) > 10000;

(iii) list the names of the students enrolled for the course’CS_51’ and having ‘B’ grade.

SELECT S.name

FROM Student S

JOIN Enroll E ON S.usn = E.usn

WHERE E.cid = ‘CS_51’ AND E.grade = ‘B’;


5. Consider the following schemas:
sailor(sid,sname,rating,age)

Boat(bid,bname,colour)

Reserve(sid,bid,day)

(i) retrieve the sailor names that have reserved red and green boats.

SELECT S.sname

FROM sailor S

JOIN Reserve R1 ON S.sid = R1.sid

JOIN Boat B1 ON R1.bid = B1.bid AND B1.colour = ‘red’

JOIN Reserve R2 ON S.sid = R2.sid

JOIN Boat B2 ON R2.bid = B2.bid AND B2.colour = ‘green’;

(ii) retrieve the colors of boats reserved by raj

SELECT DISTINCT B.colour

FROM sailor S

JOIN Reserve R ON S.sid = R.sid

JOIN Boat B ON R.bid = B.bid

WHERE S.sname = ‘Raj’;

(iii) retrieve the sid’s of sailors with age over 20,who have not reserved a red boat.

SELECT S.sid

FROM sailor S

WHERE S.age > 20

AND NOT EXISTS (

SELECT 1

FROM Reserve R

JOIN Boat B ON R.bid = B.bid

WHERE S.sid = R.sid AND B.colour = ‘red’

);
(iv) retrieve the names of sailors who have reserved all boats.

SELECT S.sname

FROM sailor S

WHERE NOT EXISTS (

SELECT B.bid

FROM Boat B

WHERE NOT EXISTS (

SELECT R.bid

FROM Reserve R

WHERE R.bid = B.bid AND R.sid = S.sid

);

(i) SELECT e.employee_name, e.street, e.city

FROM Employee e

JOIN Works w ON e.employee_name = w.employee_name

WHERE w.company_name = 'First Bank Corporation'

AND w.salary > 10000;


(ii) SELECT e.employee_name

FROM Employee e

JOIN Works w ON e.employee_name = w.employee_name

WHERE w.company_name != 'First Bank Corporation';

(iii) SELECT e.employee_name

FROM Employee e

JOIN Works w ON e.employee_name = w.employee_name

WHERE w.salary > (

SELECT MAX(w2.salary)

FROM Works w2

WHERE w2.company_name = 'Small Bank Corporation'

);

(iv) SELECT c.company_name

FROM Company c

JOIN Works w ON c.company_name = w.company_name

GROUP BY c.company_name

ORDER BY SUM(w.salary) ASC

LIMIT 1;

(v) SELECT e.employee_name

FROM Employee e

JOIN Manages m ON e.employee_name = m.employee_name

JOIN Employee mgr ON m.manager_name = mgr.employee_name

WHERE e.city = mgr.city

AND e.street = mgr.street;


(i) SELECT Dname, fname, Lname

FROM dept

JOIN emp ON dept.MgrSSN = emp.SSN;

(ii) SELECT project.Pnumber, project.Pname, COUNT(works_on.ESSN) AS NumOfEmployees

FROM project

JOIN works_on ON project.Pnumber = works_on.Pno

GROUP BY project.Pnumber, project.Pname;

(iii) SELECT fname, Lname

FROM emp

WHERE NOT EXISTS (

SELECT project.Pnumber

FROM project

WHERE project.Dnum = 5

EXCEPT

SELECT works_on.Pno

FROM works_on

WHERE works_on.ESSN = emp.SSN

);
(iv) SELECT fname, Lname

FROM emp

WHERE SSN NOT IN (

SELECT ESSN

FROM dependent

);

(v) SELECT gender, COUNT(*) AS NumOfEmployees

FROM emp

GROUP BY gender;

(i) SELECT E.Fname, E.Lname, E.address

FROM Emp E

JOIN dept D ON E.dno = D.dnumber

WHERE D.dname = 'sports';

(ii) SELECT E.dno, COUNT(E.SSN) AS num_employees, AVG(E.salary) AS avg_salary

FROM Emp E

GROUP BY E.dno;
(iii) SELECT P.Pnumber, P.dnum, M.Lname, M.address, M.bdate

FROM project P

JOIN dept D ON P.dnum = D.dnumber

JOIN Emp M ON D.mgrSSN = M.SSN;

(iv) SELECT E.Fname, E.Lname

FROM Emp E

JOIN dependent D ON E.SSN = D.ESSN

GROUP BY E.SSN, E.Fname, E.Lname

HAVING COUNT(D.dependent_name) >= 2;

(v) SELECT E.Fname, E.Lname

FROM Emp E

WHERE E.dno = 20 AND E.gender = 'F' AND E.salary > 50000;

(i) SELECT age

FROM Sailors

WHERE Sname LIKE 'A%A'

AND LENGTH(Sname) >= 3;

(ii) SELECT rating, MIN(age) AS youngest_age

FROM Sailors
WHERE age >= 18

GROUP BY rating

HAVING COUNT(Sid) >= 2;

(iii) SELECT Sname

FROM Sailors

WHERE Sid NOT IN (

SELECT DISTINCT Sid

FROM Reservers R

JOIN Boats B ON R.bid = B.bid

WHERE B.color = 'red'

);

(iv) SELECT S.sid, S.Sname, S.rating, (S.rating + 1) AS incremented_rating

FROM Sailors S

JOIN (

SELECT Sid, day

FROM Reservers

GROUP BY Sid, day

HAVING COUNT(DISTINCT bid) >= 2

) R ON S.sid = R.sid;
(i) SELECT

P.Pnumber,

P.Dnum,

E.Lname,

E.Address,

E.Bdate

FROM

PROJECT P

JOIN

DEPARTMENT D ON P.Dnum = D.Dnumber

JOIN

EMPLOYEE E ON D.Mgr_ssn = E.Ssn

WHERE

P.Plocation = 'Stafford';

(ii) SELECT

E.Fname,

E.Lname

FROM

EMPLOYEE E

JOIN

DEPENDENT D ON E.Ssn = D.Essn

WHERE

E.Fname = D.Dependent_name;

(iii) SELECT

P.Pname,

SUM(W.Hours) AS Total_Hours

FROM

PROJECT P

JOIN
WORKS_ON W ON P.Pnumber = W.Pno

GROUP BY

P.Pname;

(iv) SELECT

E.Fname,

E.Lname

FROM

EMPLOYEE E

WHERE NOT EXISTS (

SELECT

P.Pnumber

FROM

PROJECT P

JOIN

DEPARTMENT D ON P.Dnum = D.Dnumber

WHERE

D.Dname = 'Research'

AND NOT EXISTS (

SELECT

W.Essn

FROM

WORKS_ON W

WHERE

W.Essn = E.Ssn

AND

W.Pno = P.Pnumber

);
(i) SELECT w.Pname, l.City

FROM works w

JOIN lives l ON w.Pname = l.Pname

WHERE w.Cname = 'Wipro';

(ii) SELECT DISTINCT w.Pname

FROM works w

WHERE w.Cname != 'Infosys';

(iii) SELECT w1.Pname

FROM works w1

WHERE w1.Salary > ALL (SELECT w2.Salary

FROM works w2

WHERE w2.Cname = 'Oracle');

(iv) SELECT w.Pname

FROM works w

JOIN lives l ON w.Pname = l.Pname

JOIN located_In li ON w.Cname = li.Cname AND l.City = li.City;


(i) SELECT DISTINCT I.ITEM_NAME

FROM ITEM I

JOIN SALES S ON I.ITEM_NO = S.ITEM_NO

JOIN CUSTOMER C ON S.CID = C.CID

WHERE C.CNAME = 'Prasanth';

(ii) SELECT DISTINCT I.ITEM_NAME

FROM ITEM I

JOIN SUPPLY SP ON I.ITEM_NO = SP.ITEM_NO

WHERE SP.SUPPLY_DATE BETWEEN '2019-01-01' AND '2019-01-30';

(iii) SELECT C.CID, C.CNAME, C.EMAIL, C.ADDR, C.PHONE

FROM CUSTOMER C

JOIN SALES S ON C.CID = S.CID

GROUP BY C.CID, C.CNAME, C.EMAIL, C.ADDR, C.PHONE

HAVING SUM(S.AMOUNT) > 5000;


(iv) SELECT

SUM(S.AMOUNT) AS Total_Sales_Amount,

SUM(S.#ITEMS) AS Total_Items,

AVG(S.AMOUNT) AS Average_Sale_Amount

FROM SALES S;

(v) SELECT C.CID, C.CNAME, C.EMAIL, C.ADDR, C.PHONE

FROM CUSTOMER C

LEFT JOIN SALES S ON C.CID = S.CID

WHERE S.CID IS NULL;

(i) SELECT *

FROM RESORT

WHERE resortcity = 'Los Angeles';

(ii) SELECT *

FROM RESORT

WHERE numsuite > 30;

(iii) SELECT *

FROM VISITOR

ORDER BY firstname ASC;


(i) SELECT S.SName, COUNT(E.Courseno) AS NumberOfCourses

FROM STUDENT S

JOIN ENROLL E ON S.SSn = E.SSn

WHERE S.SName = 'John Smith' AND E.Quarter = 'WO9'

GROUP BY S.SName;

(ii) SELECT B.Courseno, B.book_isbn, T.book_title

FROM BOOK_ADOPTION B

JOIN TEXT T ON B.book_isbn = T.book_isbn

JOIN COURSE C ON B.Courseno = C.Courseno

WHERE C.dept = 'CS'

GROUP BY B.Courseno, B.book_isbn, T.book_title

HAVING COUNT(B.book_isbn) > 2;

(iii) SELECT DISTINCT C.dept

FROM COURSE C

JOIN BOOK_ADOPTION B ON C.Courseno = B.Courseno

JOIN TEXT T ON B.book_isbn = T.book_isbn

WHERE T.Publisher = 'Pearson'

GROUP BY C.dept

HAVING COUNT(DISTINCT B.book_isbn) = (SELECT COUNT(DISTINCT B2.book_isbn)

FROM BOOK_ADOPTION B2
JOIN TEXT T2 ON B2.book_isbn = T2.book_isbn

WHERE B2.Courseno IN (SELECT C2.Courseno

FROM COURSE C2

WHERE C2.dept = C.dept)

AND T2.Publisher = 'Pearson');

(i) SELECT E.Name

FROM EMP E

JOIN DEPT D ON E.dno = D.dnum

WHERE D.dnum = (

SELECT dno

FROM EMP

WHERE Salary = (SELECT MAX(Salary) FROM EMP)

);

(ii) SELECT E1.Name

FROM EMP E1

WHERE E1.Salary >= (

SELECT MIN(Salary) + 10000

FROM EMP

);
(iii) CREATE VIEW ResearchEmployees AS

SELECT E.Name AS EmployeeName, S.Name AS SupervisorName, E.Salary

FROM EMP E

JOIN EMP S ON E.Superssn = S.Ssn

JOIN DEPT D ON E.dno = D.dnum

WHERE D.dname = 'Research';

(iv) CREATE VIEW ProjectSummary AS

SELECT P.Pname AS ProjectName, D.dname AS ControllingDeptName,

COUNT(W.Essn) AS NumberOfEmployees,

SUM(W.Hours) AS TotalHoursWorked

FROM PROJECT P

JOIN DEPT D ON P.dnum = D.dnum

JOIN WORKS_ON W ON P.Pnumber = W.Pno

GROUP BY P.Pname, D.dname

HAVING COUNT(W.Essn) > 1;

(i) SELECT Title

FROM Movie

WHERE director = 'Hanson' AND Myear > 1997;

(ii) -- Find all actors

SELECT Actor AS Name, Aage AS Age

FROM Actors
UNION

-- Find all directors

SELECT Director AS Name, dage AS Age

FROM Directors;

(iii) SELECT M.Title

FROM Movie M

JOIN Acts A ON M.Title = A.title

JOIN Actors AC ON A.Actor = AC.Actor

WHERE M.director = 'Coen' AND AC.Actor = 'Mc Dormand';

(iv) SELECT D.Director, A.Actor

FROM Directors D

JOIN Movie M ON D.Director = M.director

JOIN Acts A ON M.Title = A.title

JOIN Actors A ON A.Actor = A.Actor

WHERE D.dage < A.Aage;

(i) SELECT DISTINCT S1.Sname

FROM Sailors S1

JOIN RESERVE R1 ON S1.SID = R1.SID

JOIN BOATS B1 ON R1.BID = B1.BID

JOIN RESERVE R2 ON S1.SID = R2.SID


JOIN BOATS B2 ON R2.BID = B2.BID

WHERE B1.Color = 'Red' AND B2.Color = 'Green';

(ii) SELECT DISTINCT S.Sname

FROM Sailors S

JOIN RESERVE R ON S.SID = R.SID

JOIN BOATS B ON R.BID = B.BID

WHERE S.Age > 20 AND B.Color = 'Black';

(iii) SELECT DISTINCT S.Sname

FROM Sailors S

JOIN RESERVE R ON S.SID = R.SID

JOIN BOATS B ON R.BID = B.BID

WHERE B.Color = 'Green' AND R.Day = 'Monday';

(iv) SELECT COUNT(*)

FROM BOATS B

LEFT JOIN RESERVE R ON B.BID = R.BID

WHERE R.BID IS NULL;

(v) SELECT Sname

FROM Sailors

WHERE Rating = 10

AND Age = (SELECT MAX(Age) FROM Sailors WHERE Rating = 10);


(i) SELECT DISTINCT p.PNo

FROM PROJECT p

JOIN EMPLOYEE e ON p.DNo = e.DNo

WHERE e.Name LIKE '%Scott%'

UNION

SELECT DISTINCT p.PNo

FROM PROJECT p

JOIN DEPARTMENT d ON p.DNo = d.DNo

JOIN EMPLOYEE e ON d.MgrSSN = e.SSN

WHERE e.Name LIKE '%Scott%';

(ii) SELECT e.SSN, e.Name, e.Salary * 1.10 AS NewSalary

FROM EMPLOYEE e

JOIN WORK_ON w ON e.SSN = w.SSN

JOIN PROJECT p ON w.PNo = p.PNo

WHERE p.PName = 'IOT';

(iii) SELECT

SUM(e.Salary) AS TotalSalary,

MAX(e.Salary) AS MaxSalary,

MIN(e.Salary) AS MinSalary,

AVG(e.Salary) AS AvgSalary

FROM EMPLOYEE e

JOIN DEPARTMENT d ON e.DNo = d.DNo


WHERE d.Dname = 'accounts';

(iv) SELECT e.Name

FROM EMPLOYEE e

WHERE NOT EXISTS (

SELECT p.PNo

FROM PROJECT p

WHERE p.DNo = 5

AND NOT EXISTS (

SELECT w.SSN

FROM WORK_ON w

WHERE w.SSN = e.SSN

AND w.PNo = p.PNo

);

(v) SELECT e.DNo, COUNT(*) AS NumberOfHighEarners

FROM EMPLOYEE e

WHERE e.Salary > 600000

GROUP BY e.DNo

HAVING COUNT(*) > 5;

(i) UPDATE FACULTY

SET Salary = Salary * 1.15;


(ii) SELECT Dept

FROM FACULTY

GROUP BY Dept

HAVING AVG(Salary) > 20000;

(iii) SELECT Fname

FROM FACULTY

WHERE Fname LIKE 'R%U';

(iv) SELECT Sname

FROM STUDENTS

JOIN ENROL ON STUDENTS.SID = ENROL.SID

JOIN COURSE ON ENROL.CID = COURSE.CID

WHERE COURSE.Cname = 'GS-53' AND ENROL.GRADE = 'A';

(i) SELECT E.Name, E.Address

FROM EMPLOYEE E

JOIN DEPARTMENT D ON E.DNo = D.DNumber

WHERE D.DName = 'Research';

(ii) SELECT E.Name

FROM EMPLOYEE E

WHERE NOT EXISTS (


SELECT P.PNumber

FROM PROJECT P

WHERE P.DNum = 5

AND NOT EXISTS (

SELECT W.ESSN

FROM WORKS-ON W

WHERE W.PNo = P.PNumber

AND W.ESSN = E.SSN

);

(iii) SELECT P.PName

FROM PROJECT P

JOIN WORKS-ON W ON P.PNumber = W.PNo

JOIN EMPLOYEE E ON W.ESSN = E.SSN

WHERE E.Name = 'Smith';

(iv) SELECT E.Name

FROM EMPLOYEE E

LEFT JOIN DEPENDENT D ON E.SSN = D.ESSN

WHERE D.ESSN IS NULL;

(i) SELECT DISTINCT S.SNAME

FROM SAILORS S

JOIN RESERVES R ON S.SID = R.SID


JOIN BOATS B ON R.BID = B.BID

WHERE B.COLOR IN ('red', 'green');

(ii) SELECT S1.SNAME

FROM SAILORS S1

WHERE S1.AGE > (SELECT MAX(S2.AGE) FROM SAILORS S2 WHERE S2.RATING = 10);

(iii) SELECT S1.SID, S1.SNAME, S1.RATING

FROM SAILORS S1

WHERE S1.RATING > (SELECT S2.RATING FROM SAILORS S2 WHERE S2.SNAME = 'Ramesh');

(i) SELECT Name

FROM MEMBERS

WHERE Designation = 'Professor' AND Age > 45;

(ii) SELECT DISTINCT B.Book_Title

FROM BOOKS B

JOIN RESERVES R ON B.Bookid = R.Book-id

JOIN MEMBERS M ON R.Member-id = M.member-id

WHERE M.Designation = 'Professor';

(iii) SELECT M.member-id

FROM MEMBERS M

WHERE NOT EXISTS (


SELECT 1

FROM RESERVES R

JOIN BOOKS B ON R.Book-id = B.Bookid

WHERE M.member-id = R.Member-id AND B.Book-price > 500

);

(iv) SELECT B.Book-Author, B.Book_Title

FROM BOOKS B

JOIN RESERVES R ON B.Bookid = R.Book-id

WHERE R.Date = '2017-05-27';

(v) SELECT M.Name

FROM MEMBERS M

WHERE NOT EXISTS (

SELECT B.Bookid

FROM BOOKS B

WHERE NOT EXISTS (

SELECT 1

FROM RESERVES R

WHERE R.Member-id = M.member-id AND R.Book-id = B.Bookid

);

(i) SELECT DISTINCT S1.Sname

FROM Sailors S1
JOIN Reserve R1 ON S1.Sid = R1.Sid

JOIN Boats B1 ON R1.Bid = B1.Bid

JOIN Reserve R2 ON S1.Sid = R2.Sid

JOIN Boats B2 ON R2.Bid = B2.Bid

WHERE B1.color = 'red' AND B2.color = 'green';

(ii) SELECT COUNT(*)

FROM Boats B

WHERE B.Bid NOT IN (SELECT DISTINCT Bid FROM Reserve);

(iii) SELECT S.Sname

FROM Sailors S

JOIN Reserve R ON S.Sid = R.Sid

WHERE R.Bid = 103;

(iv) SELECT S.Sname

FROM Sailors S

WHERE NOT EXISTS (

SELECT B.Bid

FROM Boats B

WHERE NOT EXISTS (

SELECT R.Bid

FROM Reserve R

WHERE R.Bid = B.Bid AND R.Sid = S.Sid

);

You might also like