21CSB0B20 DBMS Assignment

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

DBMS LAB ASSIGNMENT

Name - Greata Chakravarty Roll No - 21CSB0B20

1.Consider the relational schema below :


Faculty(FacultyID, facultyname, facultyDept)
Student(StudentID, StudentName, CourseID, rating, course name)
CourseID is a foreign key that refers to the faculty relation’s
facultyID. Assume that each faculty teach something to at least one
student. What is the result of the following query?
a) Names of all faculty who hav received aa ‘bad’ rating from at most
one of their students
b) Names of all faculty who have not received a ‘bad’ rating from any
of their students
c) Names of all faculty with a ‘good’ rating from all their students
d) Names of all faculty who have received a ‘bad’ rating from all their
students
e) Names of all faculty who have received a ‘good’ rating from at
least one of their students

Faculty Table -
create table faculty
(
fac_id int primary key,
fac_name varchar(20),
fac_dept varchar(20)
);

insert into faculty values(1,'sujit das','cse');


insert into faculty values(2,'prakash','ece');
insert into faculty values(3,'sanjay','cse');
insert into faculty values(4,'ramana rao’,'civil');
select * from faculty;

Student Table -
create table student_tbl
(
stud_id int primary key,
stud_name varchar(20),
course_id int,
rating varchar(10),
course_name varchar(20),
foreign key(course_id) references faculty(fac_id) on delete set null
);

insert into student_tbl values(1,'siddu',1,'good','dsa');


insert into student_tbl values(2,'ramc',2,'bad','na');
insert into student_tbl values(3,'ashish',4,'good','ct');
insert into student_tbl values(4,'jaiditya',1,'bad','dsa');
insert into student_tbl values(5,'vishal',3,'bad','lp');
insert into student_tbl values(6,'gangadhar',3,'good','lp');
insert into student_tbl values(7,'uma',3,'good','lp');
insert into student_tbl values(8,’jessi',1,'good','dsa');
select * from student_tbl;

Good rating -
select fac_id,count(*) as good_rating from faculty
join student_tbl on faculty.fac_id=student_tbl.course_id
where student_tbl.rating=‘good' group by fac_id;

Bad rating -
select fac_id,count(*) as bad_rat from faculty
join student_tbl on faculty.fac_id=student_tbl.course_id
where student_tbl.rating='bad'
group by fac_id;

a)
select fac_name,fac_id from faculty where fac_id not in(
select fac_id from (select fac_id,count(*) as bad_rat from faculty
join student_tbl on faculty.fac_id=student_tbl.course_id
where student_tbl.rating='bad'
group by fac_id)x
where x.bad_rat>1);

b), c)
select fac_name
from (select fac_name from faculty join student_tbl on course_id=fac_id and
rating='good' group by fac_name )
where fac_name not in (select fac_name from faculty join student_tbl on
course_id=fac_id and rating='bad' group by fac_name);

d)
select fac_name from (select fac_name,count(*) as bad_rat from faculty
join student_tbl on faculty.fac_id=student_tbl.course_id
where student_tbl.rating='bad'
group by fac_name)x
where x.bad_rat>=1;

e)
select fac_name from
(select fac_name,count(*) as bad_rat from faculty
join student_tbl on faculty.fac_id=student_tbl.course_id
where student_tbl.rating=‘good' group by fac_name)x
where x.bad_rat>=1;

2.Consider the relational schema below:


Suppliers(sid : int, sname: string, color:string)
Parts(pid, pname, color)
Catalogue(sid, pid, cost)
consider the following relational query:
a)Find out who has supplied a non-blue part.
b)Look up the names of all the vendors who haven’t delivered a non-
blue part.
c)Find all of the vendors who have supplied blue components
executively
d) Find all of the suppliers who haven’t supplied blue parts
exclusively
Suppliers Table -
create table suppliers(
suid int,
sname varchar(255),
color varchar(255)
);

insert into suppliers values (101,'sup1','blue');


insert into suppliers values (102,'sup2','red');
insert into suppliers values (103,'sup1','green');
insert into suppliers values (104,'sup4','blue');
insert into suppliers values (105,'sup2','green');
insert into suppliers values (106,'sup3','blue');
insert into suppliers values (107,'sup1','red');
select * from suppliers;

Parts Table -
create table parts(
pid int,
pname varchar(255),
color varchar(255)
);

insert into parts values (201,’pblue’,’blue’);


insert into parts values (202,’pred’,’red’);
insert into parts values (201,’pgreen’,’green’);
select * from parts;

Catalog Table -
create table catalog (
suid int,
pid int,
pcost varchar(255)
);

insert into catalog values (101,201 ,’2000’);


insert into catalog values (101,202 ,’3000’);
insert into catalog values (101,203 ,’4000’);
insert into catalog values (102,201 ,’2500’);
insert into catalog values (102,202 ,’3500’);
insert into catalog values (102,203 ,’4500’);
insert into catalog values (103,201 ,’2750’);
insert into catalog values (103,202 ,’3750’);
insert into catalog values (103,203 ,’4750’);
insert into catalog values (104,201 ,’2250’);
insert into catalog values (104,202 ,’3250’);
insert into catalog values (104,203 ,’4250’);
insert into catalog values (105,201 ,’1150’);
insert into catalog values (105,202 ,’2150’);
insert into catalog values (105,203 ,’3150’);
insert into catalog values (106,201 ,’2150’);
insert into catalog values (106,202 ,’3150’);
insert into catalog values (106,203 ,’4150’);

insert into catalog values (107,201 ,’3650’);


insert into catalog values (107,202 ,’4650’);
insert into catalog values (107,203 ,’5650’);

select * from catalog;

a)
select distinct sname from suppliers where color!=‘blue

b)
select distinct sname from suppliers where color='blue'
minus
select distinct sname from suppliers where color!=‘blue’;

c)
select distinct sname from suppliers where color='blue'
minus
select distinct sname from suppliers where color!=‘blue';

d)
select distinct sname from suppliers where color='blue'
intersect
select distinct sname from suppliers where color!=‘blue';

3.Consider the given student , school, enrollment, and exam result


schema :
student(school_id, sch_roll_no, sname, saddress)
school(school_id, sch_name, sch_address, sch_phone)
enrolment(school_id, sch_roll_no, eroll_no, examname)
exam_result(eroll_no, examname, marks)
Write SQL queries for the following questions:
a) The name of the school & the number of 100s obtained by its
students for each school with more than 200 students taking
examinations.
b) Name of the each school with more than 200 students, as well as
the no of 100s, scored by its students.
c) The name of the schools with more than 200 students, as well as
the number of students who scored 100 on at least one exam.

Student Table -
create table student(
scl_id varchar(255),
scl_rno int primary key,
s_name varchar(255),
s_address varchar(255)
);

insert into student values ('sch1',101,'adya','sadd1');


insert into student values ('sch1',102,'fariq','sadd2');
insert into student values ('sch1',103,'aakash','sadd3');
insert into student values ('sch1',104,'ravi','sadd4');
insert into student values ('sch2',201,'hitesh','sadd5');
insert into student values ('sch2',202,'kiran','sadd6');
insert into student values ('sch2',203,'ishika','sadd7');
insert into student values ('sch2',204,'divya','sadd8');
insert into student values ('sch3',301,'preeti','sadd9');
insert into student values ('sch3',302,'prisha','sadd10');
insert into student values ('sch3',303,'asmitha','sadd11');
insert into student values (‘sch3',304,'umang','sadd12');
select * from student;

School Table -
create table school (
scl_id varchar(255) primary key,
scl_name varchar(255),
scl_address varchar(255),
scl_phn varchar(10)
);

insert into school values ('sch1','Navodaya','add1','9256452626');


insert into school values ('sch2','Narayana','add2','7656262626');
insert into school values (‘sch3','Gayathri','add3','8659655656');
select * from school;

Enrollment Table -
create table enrolment
(
scl_id varchar(255),
scl_rno int,
eroll_no int primary key,
exam_name varchar(255)
);

insert into enrolment values (‘sch1',101,1,'exam');


insert into enrolment values (‘sch1',102,2,'exam');
insert into enrolment values (‘sch1’,103,3,'exam');
insert into enrolment values (‘sch1’,104,4,'exam');
insert into enrolment values (‘sch2',201,5,'exam');
insert into enrolment values (‘sch2',202,6,'exam');
insert into enrolment values (‘sch2',203,7,'exam');
insert into enrolment values (‘sch2',204,8,'exam');
insert into enrolment values (‘sch3',301,9,'exam');
insert into enrolment values (‘sch3',302,10,'exam');
insert into enrolment values (‘sch3',303,11,'exam');
insert into enrolment values (‘sch3’,304,12,'exam');
select * from enrolment;

Exam_Result Table -
insert into exam_result values (1,'exam',100);
insert into exam_result values (2,'exam',98);
insert into exam_result values (3,'exam',100);
insert into exam_result values (4,'exam',100);
insert into exam_result values (5,'exam',98);
insert into exam_result values (6,'exam',100);

insert into exam_result values (7,'exam',100);


insert into exam_result values (8,'exam',96);
insert into exam_result values (9,'exam',100);
insert into exam_result values (10,'exam',100);
insert into exam_result values (11,'exam',100);
insert into exam_result values (12,’exam',100);
select * from exam_result;

a)
select y.scl_name,count(*) as count_of_hundreds from
(select x.scl_name,ex.marks from exam_result ex join (select
s1.scl_id,s1.scl_name,e.eroll_no
from school s1 join enrolment e on s1.scl_id=e.scl_id) x on
ex.eroll_no=x.eroll_no) y
where y.marks=100 group by y.scl_name;

b)
select y.scl_name,count(*) as count_of_hundreds from
(select x.scl_name,ex.marks from exam_result ex join (select
s1.scl_id,s1.scl_name,e.eroll_no
from school s1 join enrolment e on s1.scl_id=e.scl_id) x on
ex.eroll_no=x.eroll_no) y
where y.marks=100 and y.scl_name in
(select x.scl_name from (select s1.scl_name,count(*) as count_of_students from
school s1

join student s2 on s1.scl_id=s2.scl_id where s1.scl_id=s2.scl_id group by


s1.scl_name) x where
x.count_of_students>=2) group by y.scl_name;

c)
select x.scl_name from (select s2.scl_name,count(*) as count_of_students from
student s1 join
school s2 on s1.scl_id=s2.scl_id where s1.scl_id=s2.scl_id group by
s2.scl_name) x where
x.count_of_students>=2;
intersect
select y.scl_name,count(*) as count_of_hundreds from
(select x.scl_name,ex.marks from exam_result ex join (select
s1.scl_id,s1.scl_name,e.eroll_no
from school s1 join enrolment e on s1.scl_id=e.scl_id) x on
ex.eroll_no=x.eroll_no) y
where y.marks=100 group by y.scl_name;

END OF THE ASSIGNMENT

You might also like