-- Departments 테이블 생성
-- 병원의 각 부서 정보를 저장합니다.
-- 각 부서는 고유 식별자와 부서 이름을 가지고 있습니다.
CREATE TABLE Departments (
);

-- Doctors 테이블 생성
-- 병원의 의사 정보를 저장합니다.
-- 각 의사는 고유 식별자, 이름, 전문 분야, 그리고 소속 부서 ID를 가지고 있습니다.
CREATE TABLE Doctors (
);

-- Patients 테이블 생성
-- 병원의 환자 정보를 저장합니다.
-- 각 환자는 고유 식별자, 이름, 생년월일, 성별을 가지고 있습니다.
CREATE TABLE Patients (
);

-- Appointments 테이블 생성
-- 환자와 의사 사이의 진료 예약 정보를 저장합니다.
-- 각 예약은 고유 식별자, 환자 ID, 의사 ID, 예약 날짜, 예약 상태를 가지고 있습니다.
CREATE TABLE Appointments (
);

-- Prescriptions 테이블 생성
-- 환자의 진료 시 의사에 의해 처방된 약물 정보를 저장합니다.
-- 각 처방은 고유 식별자, 예약 ID, 약물 이름, 용량을 가지고 있습니다.
CREATE TABLE Prescriptions (
);

-- Departments 데이터 삽입
INSERT INTO Departments (name) VALUES
('Cardiology'), ('Pediatrics'), ('Neurology'), ('Orthopedics'), ('Dermatology'),
('Oncology'), ('Surgery'), ('Gastroenterology'), ('Ophthalmology'), ('Urology');

-- Doctors 데이터 삽입
INSERT INTO Doctors (name, specialty, department_id) VALUES
('Dr. Alice Johnson', 'Cardiologist', 1), ('Dr. Bob Smith', 'Pediatrician', 2),
('Dr. Carol Taylor', 'Neurologist', 3), ('Dr. David Wilson', 'Orthopedic Surgeon', 4),
('Dr. Eve Brown', 'Dermatologist', 5), ('Dr. Frank Jones', 'Oncologist', 6),
('Dr. Grace Davis', 'Surgeon', 7), ('Dr. Henry Miller', 'Gastroenterologist', 8),
('Dr. Isabella Garcia', 'Ophthalmologist', 9), ('Dr. Jack White', 'Urologist', 10);

-- Patients 데이터 삽입
INSERT INTO Patients (name, date_of_birth, gender) VALUES
('John Doe', '1980-01-01', 'M'), ('Jane Doe', '1990-02-02', 'F'),
('Alice Green', '1985-03-03', 'F'), ('Bob Blue', '1970-04-04', 'M'),
('Carol Yellow', '2000-05-05', 'F'), ('David Teal', '1995-06-06', 'M'),
('Eve Black', '1992-07-07', 'F'), ('Frank White', '1988-08-08', 'M'),
('Grace Purple', '1975-09-09', 'F'), ('Henry Orange', '1982-10-10', 'M');

-- Appointments 데이터 삽입
INSERT INTO Appointments (patient_id, doctor_id, appointment_date, status) VALUES
(1, 1, '2024-01-10', 'Scheduled'), (2, 2, '2024-01-11', 'Completed'),
(3, 3, '2024-01-12', 'Cancelled'), (4, 4, '2024-01-13', 'Scheduled'),
(5, 5, '2024-01-14', 'Completed'), (6, 6, '2024-01-15', 'Cancelled'),
(7, 7, '2024-01-16', 'Scheduled'), (8, 8, '2024-01-17', 'Completed'),
(9, 9, '2024-01-18', 'Cancelled'), (10, 10, '2024-01-19', 'Scheduled');

-- Prescriptions 데이터 삽입
INSERT INTO Prescriptions (appointment_id, medication, dosage) VALUES
(1, 'Atorvastatin', '20 mg'), (2, 'Amoxicillin', '500 mg'),
(3, 'Metformin', '850 mg'), (4, 'Ibuprofen', '400 mg'),
(5, 'Lisinopril', '10 mg'), (6, 'Hydrochlorothiazide', '25 mg'),
(7, 'Simvastatin', '40 mg'), (8, 'Levothyroxine', '50 mg'),
(9, 'Gabapentin', '300 mg'), (10, 'Amlodipine', '5 mg');

초급

  1. 문제: 모든 부서의 이름을 조회하세요.
  2. 문제: 모든 의사의 이름과 전문 분야를 조회하세요.
  3. 문제: 'Pediatrics' 부서에 속한 의사들의 이름을 조회하세요.
  4. 문제: 모든 환자의 이름과 생년월일을 조회하세요.

중급 (조인 포함)

  1. 문제: 각 부서에 소속된 의사의 수를 조회하세요.
  2. 문제: 'Surgery' 부서에서 근무하는 의사들이 진료 예정인 모든 환자의 이름을 조회하세요.
  3. 문제: 모든 예약의 상태와 해당 예약을 진행하는 의사의 이름을 조회하세요.
  4. 문제: 2024년에 예정된 모든 진료의 세부 정보(환자 이름, 의사 이름, 예약 날짜)를 조회하세요.
  5. 문제: 각 의사가 진료한 환자 수를 조회하세요. 최소 2명 이상의 환자를 진료한 의사만 출력해야 합니다.

고급 (복잡한 조인 및 서브쿼리)

  1. 문제: 가장 많은 환자를 진료한 의사의 이름을 조회하세요.
  2. 문제: 진료가 완료된 모든 예약에서 처방된 약물의 종류를 조회하세요.
  3. 문제: 가장 많이 처방된 약물을 조회하세요.
  4. 문제: 각 환자가 받은 처방의 총 수를 조회하세요.