From 92fac5a5ca656f8e01e8a9918a30d122e75a16a0 Mon Sep 17 00:00:00 2001 From: HaNgocHieu0301 Date: Fri, 26 May 2023 23:15:20 +0700 Subject: [PATCH 1/2] Add files via upload sol-02 --- sol-02.sql | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 sol-02.sql diff --git a/sol-02.sql b/sol-02.sql new file mode 100644 index 0000000..23d4fac --- /dev/null +++ b/sol-02.sql @@ -0,0 +1,52 @@ +CREATE SCHEMA be01_ass1; +USE be01_ass1; +CREATE TABLE PROFESSOR( + PROF_ID INTEGER PRIMARY KEY, + PROF_LNAME VARCHAR(50), + PROF_FNAME VARCHAR(50) + ); + CREATE TABLE STUDENT( + STUD_ID INTEGER PRIMARY KEY, + STUD_FNAME VARCHAR(50), + STUD_LNAME VARCHAR(50), + STUD_STREET VARCHAR(50), + STUD_CITY VARCHAR(50), + STUD_ZIP VARCHAR(50) + ); + + CREATE TABLE COURSE( + COURSE_ID INTEGER PRIMARY KEY, + COURSE_NAME VARCHAR(255) + ); + +CREATE TABLE ROOM( + ROOM_ID INTEGER PRIMARY KEY, + ROOM_LOC VARCHAR(50), + ROOM_CAP VARCHAR(50) +); + +CREATE TABLE CLASS( + CLASS_ID INTEGER PRIMARY KEY, + CLASS_NAME VARCHAR(255), + PROF_ID INTEGER, + COURSE_ID INTEGER, + ROOM_ID INTEGER, + FOREIGN KEY (PROF_ID) REFERENCES PROFESSOR(PROF_ID), + FOREIGN KEY (COURSE_ID) REFERENCES COURSE(COURSE_ID), + FOREIGN KEY (ROOM_ID) REFERENCES ROOM(ROOM_ID) +); +CREATE TABLE ENROLL( + STUD_ID INTEGER, + CLASS_ID INTEGER, + FOREIGN KEY (STUD_ID) REFERENCES STUDENT(STUD_ID), + FOREIGN KEY (CLASS_ID) REFERENCES CLASS(CLASS_ID), + GRADE VARCHAR(3), + PRIMARY KEY(STUD_ID, CLASS_ID) +); +CREATE TABLE ClassRoom( + CLASS_ID INTEGER, + ROOM_ID INTEGER, + FOREIGN KEY (CLASS_ID) REFERENCES CLASS(CLASS_ID), + FOREIGN KEY (ROOM_ID) REFERENCES ROOM(ROOM_ID), + PRIMARY KEY (CLASS_ID, ROOM_ID) +) \ No newline at end of file From 96c28ae0ef3abbfe71a165c53bd31f888dc3fa8f Mon Sep 17 00:00:00 2001 From: HaNgocHieu0301 Date: Sat, 27 May 2023 00:26:42 +0700 Subject: [PATCH 2/2] update sol-03 (not optimize) --- sol-03.sql | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 sol-03.sql diff --git a/sol-03.sql b/sol-03.sql new file mode 100644 index 0000000..f207922 --- /dev/null +++ b/sol-03.sql @@ -0,0 +1,82 @@ +USE be01_ass1; +-- bai 1 +SELECT c.CLASS_NAME, concat(s.STUD_LNAME, ' ', s.STUD_FNAME) as STUD_FULLNAME, concat(p.PROF_FNAME, ' ' , p.PROF_LNAME) as PROF_FULLNAME +FROM enroll as e +JOIN student as s +ON e.STUD_ID = s.STUD_ID +JOIN class as c +ON c.CLASS_ID = e.CLASS_ID +JOIN professor p +ON p.PROF_ID = c.PROF_ID; + +-- bai 2 +select distinct CONCAT(p.PROF_FNAME, ' ', p.PROF_LNAME) AS PROF_FULLNAME, COURSE_NAME +from professor as p +join class as c on p.PROF_ID= c.PROF_ID +join course on c.COURSE_ID = course.COURSE_ID +group by p.PROF_ID, c.COURSE_ID; + +-- bai 3 +SELECT distinct concat(s.STUD_FNAME, ' ', s.STUD_LNAME) as fullname, cs.COURSE_NAME +FROM student as s +Join enroll as e +on s.STUD_ID = e.STUD_ID +join class as c +on c.CLASS_ID = e.CLASS_ID +join course as cs +on cs.COURSE_ID = c.COURSE_ID; + +-- bai 4,5 +SELECT *, + CASE + WHEN tempTable.AVG_GRADE = 10 THEN 'A' + WHEN tempTable.AVG_GRADE >= 9 THEN 'B' + WHEN tempTable.AVG_GRADE >= 6 THEN 'C' + WHEN tempTable.AVG_GRADE >= 4 THEN 'D' + WHEN tempTable.AVG_GRADE >= 2 THEN 'E' + ELSE 'F' + END as NUMBER_GRADE +FROM +(SELECT e.STUD_ID, concat(s.STUD_FNAME,' ',s.STUD_LNAME) as FULLNAME, avg(CAST(e.GRADE as DECIMAL)) as AVG_GRADE +FROM enroll as e +JOIN student as s +ON e.STUD_ID = s.STUD_ID +GROUP BY e.STUD_ID) as tempTable; + +-- bai 6 +select *, + CASE + WHEN tempTable.avg_grade = 10 THEN 'A' + WHEN tempTable.avg_grade >= 9 THEN 'B' + WHEN tempTable.avg_grade >= 6 THEN 'C' + WHEN tempTable.avg_grade >= 4 THEN 'D' + WHEN tempTable.avg_grade >= 2 THEN 'E' + ELSE 'F' + END as NUMBER_GRADE +from ( +select c.CLASS_ID, avg(Cast(e.GRADE as DECIMAL)) as avg_grade +from class as c +join enroll as e +on c.CLASS_ID = e.CLASS_ID +group by c.CLASS_ID) as tempTable +order by CLASS_ID; + +-- bai 7 +select *, + CASE + WHEN tempTable.avg_grade = 10 THEN 'A' + WHEN tempTable.avg_grade >= 9 THEN 'B' + WHEN tempTable.avg_grade >= 6 THEN 'C' + WHEN tempTable.avg_grade >= 4 THEN 'D' + WHEN tempTable.avg_grade >= 2 THEN 'E' + ELSE 'F' + END as NUMBER_GRADE +from ( +select c.COURSE_ID, avg(Cast(e.GRADE as DECIMAL)) as avg_grade +from class as c +join enroll as e +on c.CLASS_ID = e.CLASS_ID +join course as cs +on cs.COURSE_ID = c.COURSE_ID +group by c.COURSE_ID) as tempTable +order by COURSE_ID; \ No newline at end of file