|
DROP TABLE IF EXISTS teachers; |
|
CREATE TABLE teachers ( |
|
teacher_id BIGINT PRIMARY KEY |
|
, teacher_name VARCHAR(64) |
|
); |
|
INSERT INTO teachers VALUES (1001, 'Zelenski, J.'); |
|
INSERT INTO teachers VALUES (1002, 'Borestein, J.'); |
|
INSERT INTO teachers VALUES (1003, 'Peich, C.'); |
|
INSERT INTO teachers VALUES (1004, 'Engler, D.'); |
|
INSERT INTO teachers VALUES (1005, 'Lee, C.'); |
|
INSERT INTO teachers VALUES (1006, 'Schwarz, K.'); |
|
|
|
DROP TABLE IF EXISTS courses; |
|
CREATE TABLE courses ( |
|
course_id VARCHAR(16) PRIMARY KEY |
|
, course_name VARCHAR(128) NOT NULL |
|
, teacher_id BIGINT |
|
, FOREIGN KEY (teacher_id) REFERENCES teachers(teacher_id) |
|
); |
|
INSERT INTO courses VALUES ('CS 1U', 'Practical Unix', 1001); |
|
INSERT INTO courses VALUES ('CS 11SI', 'How to Make VR: Introduction to Virtual Reality Design and Development', 1002); |
|
INSERT INTO courses VALUES ('CS 21SI', 'AI for Social Good', 1003); |
|
INSERT INTO courses VALUES ('CS 49N', 'Using Bits to Control Atoms', 1004); |
|
INSERT INTO courses VALUES ('CS 82SI', 'Wellness in Tech: Designing an Intentional Lifestyle in a Tech-Driven World', 1003); |
|
INSERT INTO courses VALUES ('CS 100A', 'Algorithms I', 1003); |
|
INSERT INTO courses VALUES ('CS 100B', 'Algorithms in the Real World', 1001); |
|
INSERT INTO courses VALUES ('CS 106B', 'Programming Abstractions', 1005); |
|
INSERT INTO courses VALUES ('CS 106L', 'C++ Programming for Linux', 1005); |
|
|
|
DROP TABLE IF EXISTS students; |
|
CREATE TABLE students ( |
|
student_id BIGINT PRIMARY KEY |
|
, student_name VARCHAR(64) |
|
); |
|
INSERT INTO students VALUES (3001, 'Delroy Green'); |
|
INSERT INTO students VALUES (3002, 'Anna Williams'); |
|
INSERT INTO students VALUES (3003, 'Romario Grant'); |
|
INSERT INTO students VALUES (3004, 'Kristen Brown'); |
|
INSERT INTO students VALUES (3005, 'Bobby Wilson'); |
|
INSERT INTO students VALUES (3006, 'Reina Clarke'); |
|
INSERT INTO students VALUES (3007, 'Anthony Dennis'); |
|
INSERT INTO students VALUES (3008, 'Crystal White'); |
|
INSERT INTO students VALUES (3009, 'Monica Erickson'); |
|
INSERT INTO students VALUES (3010, 'George Valdez'); |
|
INSERT INTO students VALUES (3011, 'Angela Concepción'); |
|
INSERT INTO students VALUES (3012, 'Bradley Emerson'); |
|
INSERT INTO students VALUES (3013, 'Derrick Anderson'); |
|
INSERT INTO students VALUES (3014, 'David Williamson'); |
|
INSERT INTO students VALUES (3015, 'Susan Redd'); |
|
INSERT INTO students VALUES (3016, 'Maya Harris'); |
|
INSERT INTO students VALUES (3017, 'Amir Khan'); |
|
INSERT INTO students VALUES (3018, 'Hannah Horowitz'); |
|
INSERT INTO students VALUES (3019, 'Malek Hadad'); |
|
INSERT INTO students VALUES (3020, 'Esther Kattan'); |
|
|
|
DROP TABLE IF EXISTS student_courses; |
|
CREATE TABLE student_courses ( |
|
course_id VARCHAR(16) |
|
, student_id BIGINT |
|
, FOREIGN KEY (course_id) REFERENCES courses(course_id) |
|
, FOREIGN KEY (student_id) REFERENCES students(student_id) |
|
, PRIMARY KEY (course_id, student_id) |
|
); |
|
-- Delroy Green: 7 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3001); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3001); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3001); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3001); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3001); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3001); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3001); |
|
|
|
-- Anna Williams: 7 courses |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3002); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3002); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3002); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3002); |
|
INSERT INTO student_courses VALUES ('CS 1U', 3002); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3002); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3002); |
|
|
|
-- Romario Grant: 1 course |
|
INSERT INTO student_courses VALUES ('CS 1U', 3003); |
|
|
|
-- Kristen Brown: 3 courses |
|
INSERT INTO student_courses VALUES ('CS 49N', 3004); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3004); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3004); |
|
|
|
-- Bobby Wilson: 2 courses |
|
INSERT INTO student_courses VALUES ('CS 106B', 3005); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3005); |
|
|
|
-- Reina Clarke: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3006); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3006); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3006); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3006); |
|
|
|
-- Anthony Dennis: 5 courses |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3007); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3007); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3007); |
|
INSERT INTO student_courses VALUES ('CS 1U', 3007); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3007); |
|
|
|
-- Crystal White: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3008); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3008); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3008); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3008); |
|
|
|
-- Monica Erickson: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3009); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3009); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3009); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3009); |
|
|
|
-- George Valdez: 6 courses |
|
INSERT INTO student_courses VALUES ('CS 100A', 3010); |
|
INSERT INTO student_courses VALUES ('CS 100B', 3010); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3010); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3010); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3010); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3010); |
|
|
|
-- Angela Concepción: 0 courses |
|
|
|
-- Bradley Emerson: 2 courses |
|
INSERT INTO student_courses VALUES ('CS 106B', 3012); |
|
INSERT INTO student_courses VALUES ('CS 106L', 3012); |
|
|
|
-- Derrick Anderson: 0 courses |
|
|
|
-- David Williamson: 3 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3014); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3014); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3014); |
|
|
|
-- Susan Redd: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 100A', 3015); |
|
INSERT INTO student_courses VALUES ('CS 100B', 3015); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3015); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3015); |
|
|
|
-- Maya Harris: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3016); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3016); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3016); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3016); |
|
|
|
-- Amir Khan: 4 courses |
|
INSERT INTO student_courses VALUES ('CS 49N', 3017); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3017); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3017); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3017); |
|
|
|
-- Hannah Horowitz: 2 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3018); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3018); |
|
|
|
-- Malek Hadad: 7 courses |
|
INSERT INTO student_courses VALUES ('CS 1U', 3019); |
|
INSERT INTO student_courses VALUES ('CS 11SI', 3019); |
|
INSERT INTO student_courses VALUES ('CS 21SI', 3019); |
|
INSERT INTO student_courses VALUES ('CS 49N', 3019); |
|
INSERT INTO student_courses VALUES ('CS 82SI', 3019); |
|
INSERT INTO student_courses VALUES ('CS 100A', 3019); |
|
INSERT INTO student_courses VALUES ('CS 100B', 3019); |
|
|
|
-- Esther Kattan: 3 courses |
|
INSERT INTO student_courses VALUES ('CS 100A', 3020); |
|
INSERT INTO student_courses VALUES ('CS 100B', 3020); |
|
INSERT INTO student_courses VALUES ('CS 106B', 3020); |
/*********************************************************************************************************
POSTGRESQL IMPLEMENTATION
Solving the challenge queries on PostgreSQL using JOINS and CTEs (Common Table Expressions)
varun.dhawan@gmail.com
https://data-nerd.blog/
server_version|
--------------+
13.4 |
*********************************************************************************************************/
Q1. DRAW AN ENTITY RELATIONSHIP DIAGRAM (OR STATE IN WORDS THE ENTITY RELATIONSHIPS) THAT ACCURATELY DESCRIBES THIS DATABASE
Q2. IMPLEMENT A QUERY TO GET A LIST OF ALL STUDENTS AND HOW MANY COURSES EACH STUDENT IS ENROLLED IN
Q3. IMPLEMENT A QUERY THAT SHOWS THE NUMBER OF FULL-TIME AND PART-TIME STUDENTS A FULL-TIME STUDENT IS ENROLLED IN AT LEAST 4 COURSES. A PART-TIME STUDENT IS ENROLLED IN AT LEAST 1 COURSE, BUT NO MORE THAN 3.
Q4. WRITE A QUERY THAT SHOWS WHICH TEACHER(S) ARE TEACHING THE MOST NUMBER OF COURSES.
Q5. WRITE A QUERY THAT SHOWS WHICH TEACHER(S) ARE TEACHING THE LEAST NUMBER OF COURSES.
Q6. WRITE A QUERY THAT SHOWS WHICH TEACHER(S) ARE TEACHING THE MOST NUMBER OF STUDENTS.
Q7. WRITE A QUERY THAT SHOWS WHICH TEACHER(S) ARE TEACHING THE LEAST NUMBER OF STUDENTS
Q8. WRITE A QUERY THAT SHOWS WHAT THE AVERAGE NUMBER OF COURSES TAUGHT BY A TEACHER
Q9. WRITE A QUERY THAT TELLS US HOW MANY STUDENTS ARE NOT ENROLLED. WHO ARE THESE UNENROLLED STUDENTS?
Q10. WRITE A QUERY THAT LISTS THE COURSES IN ORDER OF MOST POPULAR TO LEAST POPULAR