Question: I have written the queries in SQL but I don't know how to convert it to RA, TRC, DRC, QBE. If the query CAN'T be

I have written the queries in SQL but I don't know how to convert it to RA, TRC, DRC, QBE. If the query CAN'T be converted to the appropriate RA/TRC/DRC/QBE - please mention the reason too!

Here's the schema :

Students(snum, sname, major, standing, age, gpa)

Faculty(fid, fname, deptid)

Courses(cnum, cname, course_level, credits)

Offerings(onum, cnum, day, starttime, endtime, room, max_occupancy, fid)

Enrolled(snum, onum)

PLEASE ANSWER THE FOLLOWING QUESTIONS :

1. (RA, TRC, DRC, QBE) Write a query which displays the student names and the courses (course name) which the student has taken.

select s.sname, c.cname from Students s join Enrolled e on s.snum = e.snum join Offerings o on e.onum = o.onum join Courses c on o.cnum = c.cnum;

2. (RA, TRC, DRC, QBE) Find the names of students who are not enrolled in any course.

select s.sname from Students s where NOT EXISTS (select null from Enrolled e where s.snum = e.snum);

3. (RA, TRC, DRC, QBE) Find the courses taught by faculty from more than two departments.

select temp.cname from (select c.cname, count(f.deptid) as Count from Courses c join Offerings o on c.cnum = o.cnum join Faculty f on o.fid = f.fid having count(f.deptid) > 2 group by c.cname) temp;

4. (DRC, QBE) Find the name of the course with the highest total maximum occupancy (over all course offerings).

select temp.cname from (select c.cname, SUM(o.max_occupancy) as Sum, rank() over (order by SUM(o.max_occupancy) DESC) as Rnk from Courses c join Offerings o on c.cnum = o.cnum group by c.cname) temp where rnk <= 1;

5. (RA, TRC) Find the courses that have been taken by all students.

select c.cname, c.cnum from Courses c join Offerings o on c.cnum = o.cnum join Enrolled e on o.onum = e.onum join Students s on e.snum = s.snum having count(*) = (select count(*) from Students) group by c.cname, c.cnum;

6. (RA, DRC) Find students with a GPA > 3.0 that are taking exactly two courses.

select s.sname, s.snum from Students s join Enrolled e on s.snum = e.snum join Offerings o on e.onum = o.onum where s.gpa > 3 having Count(o.cnum) = 2 group by s.sname, s.snum;

7. (TRC, QBE) Find courses taught by only one faculty member.

select c.cname, c.cnum from Courses c join Offerings o on c.cnum = o.cnum join Faculty f on o.fid = f.fid having count(DISTINCT o.fid) = 1 group by c.cname, c.cnum;

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!