Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions sol-1.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
-- capital_gain_loss
select stock_name,
SUM(
CASE
WHEN operation = "Buy" THEN price * -1
ELSE price
END
) AS capital_gain_loss
from Stocks
group by stock_name;

--count_salary_categories.sql
SELECT type.category AS category ,
COUNT(account_id) AS accounts_count
FROM (
SELECT 'Low Salary' AS category
UNION
SELECT 'Average Salary' AS category
UNION
SELECT 'High Salary' AS category
) AS type
LEFT JOIN accounts AS accounts
ON type.category = (
CASE
WHEN accounts.income > 50000 THEN "High Salary"
WHEN accounts.income >= 20000 THEN "Average Salary"
ELSE "Low Salary"
END
)
group by type.category;
223 changes: 223 additions & 0 deletions sol-2.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE = 'TRADITIONAL,ALLOW_INVALID_DATES';

------------------------------------------ CREATE DATABASE --------------------------------------------------------
DROP DATABASE IF EXISTS `SCHOOL`;
CREATE DATABASE IF NOT EXISTS `SCHOOL`;
USE `SCHOOL`;

CREATE TABLE IF NOT EXISTS PROFFESSOR (
`PROF_ID` INT AUTO_INCREMENT PRIMARY KEY,
`PROF_LNAME` VARCHAR(50) NOT NULL,
`PROF_FNAME` VARCHAR(50) NOT NULL
);

CREATE TABLE IF NOT EXISTS STUDENT (
`STUD_ID` INT AUTO_INCREMENT PRIMARY KEY,
`STUD_FNAME` VARCHAR(10) NOT NULL,
`STUD_LNAME` VARCHAR(10) NOT NULL,
`STUD_STREET` VARCHAR(10) DEFAULT NULL,
`STUD_CITY` VARCHAR(10) NULL DEFAULT NULL,
`STUD_ZIP` VARCHAR(10) NULL DEFAULT NULL
);

CREATE TABLE IF NOT EXISTS COURSE (
`COURSE_ID` INT AUTO_INCREMENT PRIMARY KEY,
`COURSE_NAME` VARCHAR(255) NOT NULL
);

CREATE TABLE IF NOT EXISTS CLASS(
`CLASS_ID` INT AUTsO_INCREMENT PRIMARY KEY,
`CLASS_NAME` VARCHAR(255),
`PROF_ID` INT,
`COURSE_ID` INT,
FOREIGN KEY (`PROF_ID`) REFERENCES `PROFFESSOR` (`PROF_ID`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`COURSE_ID`) REFERENCES `COURSE` (`COURSE_ID`) ON UPDATE RESTRICT ON DELETE RESTRICT
);

CREATE TABLE IF NOT EXISTS ROOM (
`ROOM_ID` INT AUTO_INCREMENT PRIMARY KEY,
`ROOM_LOC` VARCHAR(50),
`ROOM_CAP` VARCHAR(50),
`CLASS_ID` INT,
FOREIGN KEY (`CLASS_ID`) REFERENCES `CLASS`(`CLASS_ID`) ON UPDATE RESTRICT ON DELETE RESTRICT
);

CREATE TABLE IF NOT EXISTS ENROLL(
`STUD_ID` INT AUTO_INCREMENT,
`CLASS_ID` INT,
`GRADE` VARCHAR(3),
FOREIGN KEY (`STUD_ID`) REFERENCES `STUDENT`(`STUD_ID`) ON UPDATE RESTRICT ON DELETE RESTRICT,
FOREIGN KEY (`CLASS_ID`) REFERENCES `CLASS`(`CLASS_ID`) ON UPDATE RESTRICT ON DELETE RESTRICT,
PRIMARY KEY (`STUD_ID`, `CLASS_ID`)
);

------------------------------------------ INSERT DATABASE --------------------------------------------------------
-- PROFFESSOR
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Peter','John');
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Adam','Smith');
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Warrent','Bridge');
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Peterson','Wick');
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Hello','World');
INSERT INTO `PROFFESSOR` (`PROF_FNAME`, `PROF_LNAME`) VALUES('Professor','Wong');

-- PROFFESSOR
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Adam','John', 'street 1','city 1','zip 1');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Peter','John','street 2','city 2','zip 2');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Harry','Kane','street 3','city 3','zip 3');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Ronie','Smith','street 4','city 4','zip 4');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Luke','Shaw', 'street 5','city 5','zip 5');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Helen','Dane','street 6','city 6','zip 6');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Danie','John','street 7','city 7','zip 7');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Mike','Gil', 'street 8','city 8','zip 8');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Sauny','Curry','street 9','city 9','zip 9');
INSERT INTO `STUDENT` (`STUD_FNAME`, `STUD_LNAME`,`STUD_STREET`,`STUD_CITY`,`STUD_ZIP`) VALUES ('Adama','Stone','street 10','city 10','zip 10');
-- COURSE
INSERT INTO `COURSE` (`COURSE_NAME`) VALUES('PROGRAMING');
INSERT INTO `COURSE` (`COURSE_NAME`) VALUES('BIOLOGY');
INSERT INTO `COURSE` (`COURSE_NAME`) VALUES('MATH');
INSERT INTO `COURSE` (`COURSE_NAME`) VALUES('ENGLISH');
INSERT INTO `COURSE` (`COURSE_NAME`) VALUES('PHYSICS');
-- CLASS
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A1',1,1);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A2',2,3);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A3',3,5);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A4',5,4);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A5',6,2);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A6',1,1);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A7',4,5);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A8',6,3);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A9',3,2);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A10',4,4);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A11',2,5);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A12',2,3);
INSERT INTO `CLASS` (`CLASS_NAME`,`PROF_ID`,`COURSE_ID`) VALUES('CLASS-A13',5,1);
-- ROOM
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-1',30,1);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-2',30,2);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-3',30,3);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-4',30,4);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-5',30,5);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-6',30,6);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-7',30,7);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-8',30,8);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-9',30,9);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-10',30,10);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-11',30,11);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-12',30,12);
INSERT INTO `ROOM` (`ROOM_LOC`, `ROOM_CAP`, `CLASS_ID`) VALUES('LOC-13',30,13);
-- ENROLL
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(1,1,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(1,2,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(1,3,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(2,3,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(2,4,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(2,5,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(2,6,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(3,6,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(3,7,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(3,8,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(4,8,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(4,9,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(4,10,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(5,10,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(5,11,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(5,12,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(6,11,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(6,12,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(6,13,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(6,13,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(7,12,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(7,14,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(8,15,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(8,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(9,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(10,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(8,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(7,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(10,15,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(6,16,'GR');
INSERT INTO `ENROLL` (`STUD_ID`, `CLASS_ID`, `GRADE`) VALUES(4,13,'GR');

------------------------------------------ QUERY DATABASE --------------------------------------------------------

-- những cặp student-professor có dạy học nhau và số lớp mà họ có liên quan
SELECT CONCAT(P.PROF_FNAME , " " , P.PROF_LNAME) AS PROFFESSOR_NAME,
CONCAT(S.STUD_FNAME , " " , S.STUD_LNAME) AS STUDENT_NAME,
COUNT(C.CLASS_ID) AS TIME_MEET
FROM PROFFESSOR AS P
INNER JOIN CLASS AS C ON C.PROF_ID = P.PROF_ID
INNER JOIN ENROLL AS E ON E.CLASS_ID = C.CLASS_ID
INNER JOIN STUDENT AS S ON S.STUD_ID = E.STUD_ID
GROUP BY PROFFESSOR_NAME,STUDENT_NAME;

-- những course (distinct) mà 1 professor cụ thể đang dạy
SELECT COURSE.COURSE_NAME
FROM COURSE
INNER JOIN CLASS ON CLASS.COURSE_ID = COURSE.COURSE_ID
INNER JOIN PROFFESSOR AS P ON P.PROF_ID = CLASS.PROF_ID
WHERE P.PROF_ID = 2
GROUP BY COURSE.COURSE_NAME;

-- những course (distinct) mà 1 student cụ thể đang học
SELECT COURSE.COURSE_NAME
FROM COURSE
INNER JOIN CLASS ON CLASS.COURSE_ID = COURSE.COURSE_ID
INNER JOIN ENROLL AS E ON E.CLASS_ID = CLASS.CLASS_ID
INNER JOIN STUDENT AS S ON S.STUD_ID = E.STUD_ID
WHERE S.STUD_ID = 1
GROUP BY COURSE.COURSE_NAME;

-- điểm số là A, B, C, D, E, F tương đương với 10, 8, 6, 4, 2, 0, điểm số trung bình của 1 học sinh cụ thể (quy ra lại theo chữ cái, và xếp loại học lực (weak nếu avg < 5, average nếu >=5 < 8, good nếu >=8 )
SELECT (
CASE
WHEN AVG(E.GRADE) >= 8 THEN "good"
WHEN AVG(E.GRADE) >= 5 THEN "average"
ELSE "weak"
END) AS LEVEL,
(CASE
WHEN AVG(E.GRADE) = 10 THEN "A"
WHEN AVG(E.GRADE) >= 8 THEN "B"
WHEN AVG(E.GRADE) >= 6 THEN "C"
WHEN AVG(E.GRADE) >= 4 THEN "D"
WHEN AVG(E.GRADE) >= 2 THEN "E"
ELSE "F"
END) AS MARK_LETTER,
CONCAT(S.STUD_FNAME , " " , S.STUD_LNAME) AS STUDENT_NAME
FROM STUDENT AS S
JOIN ENROLL AS E
GROUP BY S.STUD_ID, STUDENT_NAME;

-- điểm số trung bình của các class (quy ra lại theo chữ cái)

SELECT
(CASE
WHEN AVG(E.GRADE) = 10 THEN "A"
WHEN AVG(E.GRADE) >= 8 THEN "B"
WHEN AVG(E.GRADE) >= 6 THEN "C"
WHEN AVG(E.GRADE) >= 4 THEN "D"
WHEN AVG(E.GRADE) >= 2 THEN "E"
ELSE "F"
END) AS MARK_LETTER, C.CLASS_NAME
FROM CLASS AS C
JOIN ENROLL AS E ON E.CLASS_ID = C.CLASS_ID
GROUP BY C.CLASS_ID;

-- điểm số trung bình của các course (quy ra lại theo chữ cái)

SELECT
(CASE
WHEN AVG(E.GRADE) = 10 THEN "A"
WHEN AVG(E.GRADE) >= 8 THEN "B"
WHEN AVG(E.GRADE) >= 6 THEN "C"
WHEN AVG(E.GRADE) >= 4 THEN "D"
WHEN AVG(E.GRADE) >= 2 THEN "E"
ELSE "F"
END) AS MARK_LETTER, COURSE.COURSE_NAME
FROM CLASS
JOIN COURSE ON COURSE.COURSE_ID = CLASS.COURSE_ID
JOIN ENROLL AS E ON E.CLASS_ID = CLASS.CLASS_ID
GROUP BY COURSE.COURSE_ID;