This problem uses a PostgreSQL database with data about a university. The schema of the database is provided below. Keys are underlined, field types are omitted; assume that appropriate foreign key constraints (for example, from prof into dept) are present in the full version of the schema:
student(sid, sname, sex, age, year, gpa)
course(cno, cname, dname)
section(dname, cno, sectno, pname)
enroll(sid, grade, dname, cno, sectno)
We ask that you write exactly one SQL query for each question below. Run your SQL queries on one of our PostgreSQL servers (choose any one, they are identical) using the web interface that we have set up at http://w4111p1.cs.columbia.edu/ or http://w4111p2.cs.columbia.edu/. The SQL interpreter in PostgreSQL is not identical to the one described in the textbook. If the query you write is not accepted by the server, try dierent equivalent ways until you get one that works with PostgreSQL, see http://www.postgresql.org/docs/9.3/interactive/index.html. We do not care if your answer contains duplicate rows or not. The answer to each question is worth 1 point. For each question, you should submit both (a) the SQL query and (b) the results of the execution of the query on one of the PostgreSQL servers above, which you should cut and paste from the web interface.
(a) Print the name and department of each professor who has taught a course not from his/her department at least once
(b) Print the sid and name of each student who has earned a 3.5 or higher grade in at least two dierent courses.
(c) Print the name and age of the student(s) with the highest GPA in their exact age group (i.e., the name and age of the student(s) with the highest GPA among all 15 year olds, the name and age of the student(s) with the highest GPA among all 16 year olds, and so on), for ages less than or equal to 18.
(d) For each department that both (a) has the substring Engineering in its name (e.g., Electrical Engineering) and (b) has at least 2 students majoring in the department, print the name of the department and the average GPA of the students who major in the department.
(e) Some courses are popular among students just because students enrolled in those courses usually get good grades. Print the department name, course number, and course enrollment of each course C such that the following two conditions hold: (1) course Cs enrollment is at least 3% larger than the average enrollment of the courses oered by Cs department, and (2) course Cs average grade is at least 3% larger than the average grade obtained by students in the courses oered by Cs department. Assume that the enrollment of a course is the sum of the enrollment of all its sections. You can completely ignore any course that has no students enrolled in it.