diff --git a/sql/01-create-table-student.sql b/sql/01-create-table-student.sql index dd66051..2638eac 100644 --- a/sql/01-create-table-student.sql +++ b/sql/01-create-table-student.sql @@ -1,23 +1,6 @@ -createdb sql-exercises; -psql sql-exercises; --allows me to swithc in terminal -create schema student; - create table student.student ( - id INT NOT NULL, first_name TEXT, grade INT - ); - \d student.student; --allows me to see the table in terminal -INSERT INTO student.student values (1510, 'Jordan', 9); -INSERT INTO student.student values (1689, 'Gabriel', 9); -INSERT INTO student.student values (1381, 'Tiffany', 9); -INSERT INTO student.student values (1709, 'Cassandra', 9); -INSERT INTO student.student values (1101, 'Haley', 10); -INSERT INTO student.student values (1782, 'Andrew', 10); -INSERT INTO student.student values (1468, 'Kris', 10); -INSERT INTO student.student values (1641, 'Brittany', 10); -INSERT INTO student.student values (1274, 'Alexis', 11); -INSERT INTO student.student values (1316, 'Austin', 11); -INSERT INTO student.student values (1911, 'Gabriel', 11); -INSERT INTO student.student values (1501, 'Jessica', 11); -INSERT INTO student.student values (1304, 'Jordan', 12); -INSERT INTO student.student values (1025, 'John', 12); -INSERT INTO student.student values (1934, 'Kyle', 12); -INSERT INTO student.student values (1661, 'Logan', 12); +DROP TABLE IF EXISTS student; +CREATE TABLE student ( + id SERIAL PRIMARY KEY, + name VARCHAR(255), + grade INTEGER +); \ No newline at end of file diff --git a/sql/02-create-table-friend.sql b/sql/02-create-table-friend.sql index e69de29..7b3bf77 100644 --- a/sql/02-create-table-friend.sql +++ b/sql/02-create-table-friend.sql @@ -0,0 +1,5 @@ +DROP TABLE IF EXISTS friend; +CREATE TABLE friend ( + id1 INTEGER REFERENCES student(id), + id2 INTEGER REFERENCES student(id), +); \ No newline at end of file diff --git a/sql/03-create-table-like.sql b/sql/03-create-table-like.sql index e69de29..fbfaa04 100644 --- a/sql/03-create-table-like.sql +++ b/sql/03-create-table-like.sql @@ -0,0 +1,5 @@ +DROP TABLE IF EXISTS student_like; +CREATE TABLE student_like ( + liker_id INTEGER REFERENCES student(id), + likee_id INTEGER REFERENCES student(id), +); \ No newline at end of file diff --git a/sql/04-load-table-student.sql b/sql/04-load-table-student.sql index e69de29..2307a22 100644 --- a/sql/04-load-table-student.sql +++ b/sql/04-load-table-student.sql @@ -0,0 +1,16 @@ +INSERT INTO student VALUES (1510, 'Jordan', 9); +INSERT INTO student VALUES (1689, 'Gabriel', 9); +INSERT INTO student VALUES (1381, 'Tiffany', 9); +INSERT INTO student VALUES (1709, 'Cassandra', 9); +INSERT INTO student VALUES (1101, 'Haley', 10); +INSERT INTO student VALUES (1782, 'Andrew', 10); +INSERT INTO student VALUES (1468, 'Kris', 10); +INSERT INTO student VALUES (1641, 'Brittany', 10); +INSERT INTO student VALUES (1274, 'Alexis', 11); +INSERT INTO student VALUES (1316, 'Austin', 11); +INSERT INTO student VALUES (1911, 'Gabriel', 11); +INSERT INTO student VALUES (1501, 'Jessica', 11); +INSERT INTO student VALUES (1304, 'Jordan', 12); +INSERT INTO student VALUES (1025, 'John', 12); +INSERT INTO student VALUES (1934, 'Kyle', 12); +INSERT INTO student VALUES (1661, 'Logan', 12); \ No newline at end of file diff --git a/sql/05-load-table-friend.sql b/sql/05-load-table-friend.sql index e69de29..0c65314 100644 --- a/sql/05-load-table-friend.sql +++ b/sql/05-load-table-friend.sql @@ -0,0 +1,20 @@ +INSERT INTO friend VALUES (1510, 1381); +INSERT INTO friend VALUES (1510, 1689); +INSERT INTO friend VALUES (1689, 1709); +INSERT INTO friend VALUES (1381, 1247); +INSERT INTO friend VALUES (1709, 1247); +INSERT INTO friend VALUES (1689, 1782); +INSERT INTO friend VALUES (1782, 1468); +INSERT INTO friend VALUES (1782, 1316); +INSERT INTO friend VALUES (1782, 1304); +INSERT INTO friend VALUES (1468, 1101); +INSERT INTO friend VALUES (1468, 1641); +INSERT INTO friend VALUES (1101, 1641); +INSERT INTO friend VALUES (1247, 1911); +INSERT INTO friend VALUES (1247, 1501); +INSERT INTO friend VALUES (1911, 1501); +INSERT INTO friend VALUES (1501, 1934); +INSERT INTO friend VALUES (1316, 1934); +INSERT INTO friend VALUES (1934, 1304); +INSERT INTO friend VALUES (1304, 1661); +INSERT INTO friend VALUES (1661, 1025); \ No newline at end of file diff --git a/sql/06-load-table-like.sql b/sql/06-load-table-like.sql index e69de29..3fa2bcd 100644 --- a/sql/06-load-table-like.sql +++ b/sql/06-load-table-like.sql @@ -0,0 +1,10 @@ +INSERT INTO student_like VALUES (1689, 1709); +INSERT INTO student_like VALUES (1709, 1689); +INSERT INTO student_like VALUES (1782, 1709); +INSERT INTO student_like VALUES (1911, 1247); +INSERT INTO student_like VALUES (1247, 1468); +INSERT INTO student_like VALUES (1641, 1468); +INSERT INTO student_like VALUES (1316, 1304); +INSERT INTO student_like VALUES (1501, 1934); +INSERT INTO student_like VALUES (1934, 1501); +INSERT INTO student_like VALUES (1025, 1101); \ No newline at end of file diff --git a/sql/07-query-friends-gabriel.sql b/sql/07-query-friends-gabriel.sql index e69de29..72570fb 100644 --- a/sql/07-query-friends-gabriel.sql +++ b/sql/07-query-friends-gabriel.sql @@ -0,0 +1,13 @@ +SELECT + name +FROM + student.student +JOIN + student.friend +ON + student.student.id = student.friend.id1 +WHERE + id2 = 1911 +OR + id2 = 1689; + diff --git a/sql/08-query-likes-grade-two-or-more.sql b/sql/08-query-likes-grade-two-or-more.sql index e69de29..ca83918 100644 --- a/sql/08-query-likes-grade-two-or-more.sql +++ b/sql/08-query-likes-grade-two-or-more.sql @@ -0,0 +1,21 @@ +SELECT + student_who_likes.name, + student_who_likes.grade, + student_who_is_liked.named + student_who_is_liked.grade +FROM + student +AS + student_who_likes +JOIN + student_like +ON + student_who_likes.id = student_like.liker_id +JOIN + student +AS + student_who_is_liked +ON + student_who_is_liked.id = student_like.likee_id +WHERE + student_who_likes.grade - student_who_is_liked.grade >= 1; \ No newline at end of file diff --git a/sql/09-mutual-likes.sql b/sql/09-mutual-likes.sql index e69de29..aca0d7a 100644 --- a/sql/09-mutual-likes.sql +++ b/sql/09-mutual-likes.sql @@ -0,0 +1,81 @@ +SELECT DISTINCT + student1.name, + student1.grade, + student2.name, + student2.grade +FROM + student +AS + student1 +JOIN + student_like +ON + student1.id = student_like.liker_id +JOIN + student +AS + student2 +ON + student_like.likee_id = student2.id +WHERE + student1.id IN ( + SELECT likee_id FROM student_like + ) +ORDER BY + student1.name; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +SELECT +first_name, grade +FROM +student +JOIN +student_like +AS +a_student_who_likes_b_student +ON +student.id = a_student_who_likes_b_student.liker_id +JOIN +student_like +AS +b_student_who_likes_a_student +ON +student.id = a_student_who_likes_b_student.likee_id + +WHERE +(id +IN (SELECT +liker_id +FROM +student_like)) \ No newline at end of file diff --git a/sql/10-not-liked.sql b/sql/10-not-liked.sql index e69de29..3fd5a95 100644 --- a/sql/10-not-liked.sql +++ b/sql/10-not-liked.sql @@ -0,0 +1,16 @@ +SELECT + name, grade +FROM + student +WHERE + (id NOT +IN (SELECT + liker_id +FROM + student_like)) +AND + (id NOT +IN (SELECT + likee_id +FROM + student_like)); diff --git a/sql/11-liked-but-does-not-like.sql b/sql/11-liked-but-does-not-like.sql index e69de29..0c60f54 100644 --- a/sql/11-liked-but-does-not-like.sql +++ b/sql/11-liked-but-does-not-like.sql @@ -0,0 +1,25 @@ +SELECT DISTINCT + student_a_who_likes_student_b.name, + student_a_who_likes_student_b.grade, + student_b_who_likes_no_one.name, + student_b_who_likes_no_one.grade +FROM + student +AS + student_a_who_likes_student_b +JOIN + student_like +ON + student_a_who_likes_student_b.id = student_like.liker_id +JOIN + student +AS + student_b_who_likes_no_one +ON + student_like.likee_id = student_b_who_likes_no_one.id +WHERE + student_b_who_likes_no_one.id NOT IN ( + SELECT liker_id FROM student_like + ) +ORDER BY + student_a_who_likes_student_b.name; \ No newline at end of file diff --git a/sql/12-find-friends-in-common.sql b/sql/12-find-friends-in-common.sql index e69de29..ef295b5 100644 --- a/sql/12-find-friends-in-common.sql +++ b/sql/12-find-friends-in-common.sql @@ -0,0 +1,38 @@ +SELECT DISTINCT + student_a.name, + student_a.grade, + student_b.name, + student_b.grade, + student_c.name, + student_c.grade +FROM + student +JOIN + student_like +ON + student.id = student_like.liker_id +JOIN + friend +ON + student_like.likee_id = friend.id1 +JOIN + student +AS + student_a +ON + student_a.id = student_like.liker_id +JOIN + student +AS + student_b +ON + student_b.id = student_like.likee_id +JOIN + student +AS + student_c +ON + student_c.id = friend.id1 +ORDER BY + student_a.first_name +LIMIT 2 diff --git a/sql/13-popular-students.sql b/sql/13-popular-students.sql index e69de29..6bb5544 100644 --- a/sql/13-popular-students.sql +++ b/sql/13-popular-students.sql @@ -0,0 +1,12 @@ +SELECT + name +FROM + student.student_like +JOIN + student.student +ON + student.student.id = student.student_like.likee_id +GROUP BY + name +HAVING + count(likee_id) >= 2; \ No newline at end of file