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

SQL Queries

gggg

Uploaded by

Naksha Gowda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
147 views

SQL Queries

gggg

Uploaded by

Naksha Gowda
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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