<aside> 💡

팀 내에서 공유해야 할 자료와 문서를 모두 모아 열람하세요!

</aside>

<aside> ❗ 편하게 열람할 목적이니 제출한 서류에 한해 PDF 변환 후 업로드하기

</aside>

주민번호 공유

중복되지 않는 번호

INSERT INTO tblAttendance.txt

주승 INSERT SQL

지민 INSERT SQL

진혁 INSERT SQL

이재현 INSERT SQL

tblEvaluation

ALTER TABLE tblEvaluation
ADD CONSTRAINT unique_student_seq UNIQUE (student_seq);

drop sequence SEQ_EVALUATION;

CREATE SEQUENCE SEQ_EVALUATION
START WITH 1
INCREMENT BY 1
NOCACHE;

ALTER SEQUENCE SEQ_EVALUATION INCREMENT BY 1;

-- 시퀀스 리셋 과정 -- 

DECLARE
    v_seq NUMBER;  -- 평가번호
    v_student_seq NUMBER;  -- 학생 번호
    v_course_seq NUMBER := 7;  -- 과정번호 (AI/머신러닝 개발)
    v_evaluation_score NUMBER;  -- 평점 (1~5 사이 랜덤)
    v_evaluation_content VARCHAR2(1000);  -- 평가 내용
    v_evaluation_date DATE;  -- 평가일 (2024년 7월 10일 이후 랜덤 날짜)
BEGIN
    FOR i IN 1..7 LOOP  -- 8명만 평가
        -- 수료 상태이고, 과정 종료일이 2024년 7월 10일 이후인 학생 중에서 랜덤으로 1명 선택
         SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN  1 AND 20
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~5 사이 랜덤으로 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(3, 6));

        -- 평가 내용 랜덤으로 설정
        CASE v_evaluation_score
    WHEN 1 THEN
        v_evaluation_content := '폴스택 웹 개발 과정은 너무 이론 중심적이었고, 실습 시간이 부족하여 실제 프로젝트에 적용하는 데 어려움이 있었습니다. 전반적으로 실무에서 바로 활용하기 어려운 부분이 많았습니다.';
    WHEN 2 THEN
        v_evaluation_content := '웹 개발의 기본 개념은 잘 배우겠지만, 실습이 부족해 개인 프로젝트에 적용하기 어려웠습니다. 서버와 클라이언트 사이의 연동이나 데이터베이스 연동 부분을 더 다뤄줬으면 좋겠습니다.';
    WHEN 3 THEN
        v_evaluation_content := '폴스택 웹 개발의 전반적인 구조와 흐름을 배우는 데 유익했습니다. 실습을 통해 기본적인 개발 능력을 쌓을 수 있었고, 이론과 실습의 균형이 괜찮았습니다.';
    WHEN 4 THEN
        v_evaluation_content := '웹 개발에 필요한 기술들을 효율적으로 배우게 되었고, 폴스택을 활용한 프로젝트 진행 방법을 익히는 데 큰 도움이 되었습니다. 특히 서버와 클라이언트 사이의 연동 작업을 잘 배웠습니다.';
    WHEN 5 THEN
        v_evaluation_content := '폴스택 웹 개발 과정은 프론트엔드부터 백엔드까지 전반적인 기술을 배우는 데 매우 유익했습니다. 실습을 통해 실제 프로젝트를 진행할 수 있어, 웹 개발 역량을 크게 향상시킬 수 있었습니다. 취업 준비에도 큰 도움이 되었습니다.';
END CASE;

        -- 평가일은 2024년 7월 10일 이후로 랜덤 날짜 생성
        v_evaluation_date := TO_DATE('2024-06-01', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1일부터 30일 사이

        -- 평가번호 시퀀스를 사용하여 자동 증가
        SELECT seq_evaluation.NEXTVAL INTO v_seq FROM dual;

        -- tblEvaluation 테이블에 데이터 삽입
        INSERT INTO tblEvaluation (evaluation_seq, student_seq, course_seq, evaluation_score, evaluation_content, evaluation_date)
        VALUES (v_seq, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

select * from tblevaluation order by evaluation_seq;

DECLARE
    v_seq NUMBER;  -- 평가번호
    v_student_seq NUMBER;  -- 학생 번호
    v_course_seq NUMBER := 8;  -- 과정번호 (AI/머신러닝 개발)
    v_evaluation_score NUMBER;  -- 평점 (1~5 사이 랜덤)
    v_evaluation_content VARCHAR2(1000);  -- 평가 내용
    v_evaluation_date DATE;  -- 평가일 (2024년 7월 10일 이후 랜덤 날짜)
BEGIN
    FOR i IN 1..7 LOOP  -- 7명만 평가
        -- 수료 상태이고, 과정번호가 8인 학생 중에서 학생번호 21~40번 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 21 AND 40
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~5 사이 랜덤으로 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 랜덤으로 설정 (AI/머신러닝 개발 과정에 맞게 변경)
        CASE v_evaluation_score
            WHEN 1 THEN
                v_evaluation_content := 'AI/머신러닝 개발 과정은 이론 중심적이었고 실습이 부족해 실제 현업에서 적용하기 어려운 부분이 많았습니다. 더 많은 실습과 실제 데이터셋 활용이 필요합니다.';
            WHEN 2 THEN
                v_evaluation_content := '과정 내용은 좋았지만, 설명이 부족하고 실습 시간도 부족해 학습이 어려웠습니다. 머신러닝 모델을 구현하는 부분에서 더 많은 예제와 실습을 추가하면 좋겠습니다.';
            WHEN 3 THEN
                v_evaluation_content := 'AI/머신러닝의 기본적인 개념을 잘 배우고 실습도 적당히 있었습니다. 하지만 더 많은 실전 적용을 위한 예제와 디버깅 설명이 추가되면 좋겠습니다.';
            WHEN 4 THEN
                v_evaluation_content := '과정은 매우 유익했으며, 머신러닝 모델을 실습을 통해 직접 구현해보는 경험이 좋았습니다. 좀 더 다양한 모델과 성능 개선 방법을 다루었으면 좋겠어요.';
            WHEN 5 THEN
                v_evaluation_content := 'AI/머신러닝의 기초부터 심화까지 체계적으로 배울 수 있었고, 실습을 통해 실제 모델을 구현하는 경험을 얻을 수 있었습니다. 현업에 바로 적용 가능한 지식을 많이 얻었습니다.';
        END CASE;

        -- 평가일은 2024년 7월 10일 이후로 랜덤 날짜 생성
        v_evaluation_date := TO_DATE('2024-07-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1일부터 60일 사이 랜덤

        -- 평가번호 시퀀스를 사용하여 자동 증가
        SELECT seq_evaluation.NEXTVAL INTO v_seq FROM dual;

        -- tblEvaluation 테이블에 데이터 삽입
        INSERT INTO tblEvaluation (evaluation_seq, student_seq, course_seq, evaluation_score, evaluation_content, evaluation_date)
        VALUES (v_seq, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 9;  -- 모바일 앱 개발
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..6 LOOP
        -- 수료 상태이고, 과정번호가 9인 학생 중에서 41~60번 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 41 AND 60
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 이미 평가가 있는 학생은 건너뛰기
        -- 중복된 평가를 방지하기 위해 tblevaluation 테이블에서 해당 학생과 과정에 대한 평가가 존재하는지 확인
        DECLARE
            v_count NUMBER;
        BEGIN
            SELECT COUNT(*)
            INTO v_count
            FROM tblevaluation
            WHERE STUDENT_SEQ = v_student_seq
            AND COURSE_SEQ = v_course_seq;
            
            IF v_count = 0 THEN
                -- 평가 점수 (1~5 랜덤 값)
                v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

                -- 평가 내용 (5개 항목 중 랜덤 선택)
                CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
                    WHEN 1 THEN v_evaluation_content := '실제 앱 개발 프로젝트를 진행하면서 실무 역량을 키울 수 있었습니다.';
                    WHEN 2 THEN v_evaluation_content := '안드로이드 & iOS 개발을 동시에 배울 수 있어 좋았습니다.';
                    WHEN 3 THEN v_evaluation_content := 'UI/UX 디자인부터 배포까지 전 과정을 경험할 수 있어 유익했습니다.';
                    WHEN 4 THEN v_evaluation_content := '강의 자료가 체계적으로 구성되어 있어 독학하기에도 도움이 되었습니다.';
                    WHEN 5 THEN v_evaluation_content := '앱 개발 과정에서 발생하는 디버깅과 오류 해결에 대한 설명이 부족했습니다.';
                END CASE;

                -- 평가일: 2024-07-20 이후 2개월 이내
                v_evaluation_date := TO_DATE('2024-07-20', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1~60일 사이 랜덤

                -- tblevaluation 테이블에 데이터 삽입
                INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
                VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
            END IF;
        END;
    END LOOP;
END;
/

select * from tblevaluation order by evaluation_seq;

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 10;  -- 데브옵스 & 클라우드 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..8 LOOP
        -- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 61 AND 80
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평가 점수 (1~5 랜덤 값)
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (데브옵스 & 클라우드 과정에 맞는 평가 항목)
        CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
            WHEN 1 THEN v_evaluation_content := '데브옵스와 클라우드 기술에 대한 이해도가 향상되었습니다.';
            WHEN 2 THEN v_evaluation_content := '클라우드 인프라 구축 및 관리에 대한 실용적인 지식이 얻어졌습니다.';
            WHEN 3 THEN v_evaluation_content := '데브옵스와 관련된 툴들에 대한 실습이 매우 유익했습니다.';
            WHEN 4 THEN v_evaluation_content := 'CI/CD 파이프라인 설정에 대한 경험이 크게 향상되었습니다.';
            WHEN 5 THEN v_evaluation_content := '클라우드 환경에서의 효율적인 배포 및 관리 방법에 대해 많이 배웠습니다.';
        END CASE;

        -- 평가일: 2024-07-01 이후 2개월 이내
        v_evaluation_date := TO_DATE('2024-07-01', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1~60일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 11;  -- 백엔드 개발 (Java & Spring) 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..8 LOOP  -- 8명만 평가
        -- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 81 AND 100
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평가 점수 (1~5 랜덤 값)
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (백엔드 개발(Java & Spring) 과정에 맞는 평가 항목)
        CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
            WHEN 1 THEN v_evaluation_content := '백엔드 개발에서 Java와 Spring Framework를 활용한 프로젝트 경험이 크게 향상되었습니다.';
            WHEN 2 THEN v_evaluation_content := 'Spring Boot를 사용한 RESTful API 개발과 관련된 부분에서 큰 도움이 되었습니다.';
            WHEN 3 THEN v_evaluation_content := '백엔드 개발의 전반적인 이해도를 높일 수 있었고, 데이터베이스와의 연동이 유익했습니다.';
            WHEN 4 THEN v_evaluation_content := 'Spring Security와 같은 보안 기술을 학습하여 실무에서 필요한 보안지식이 생겼습니다.';
            WHEN 5 THEN v_evaluation_content := 'Java 및 Spring을 이용한 백엔드 개발에 대한 깊은 이해를 얻었고, 실무 프로젝트에 바로 적용할 수 있을 만큼 많은 것을 배웠습니다.';
        END CASE;

        -- 평가일: 2024-06-15 이후 2개월 이내
        v_evaluation_date := TO_DATE('2024-06-15', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1~60일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 12;  -- 블록체인 & 스마트 컨트랙트 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..6 LOOP  -- 6명만 평가
        -- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 101 AND 120
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평가 점수 (1~5 랜덤 값)
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (블록체인 & 스마트 컨트랙트 과정에 맞는 평가 항목)
        CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
            WHEN 1 THEN v_evaluation_content := '블록체인의 기본 개념과 스마트 컨트랙트에 대해 배우는 데 유익했으나, 실습 부분이 부족했습니다.';
            WHEN 2 THEN v_evaluation_content := '블록체인 기술의 이해가 높아졌으며, 스마트 컨트랙트를 활용한 예제도 매우 유익했습니다.';
            WHEN 3 THEN v_evaluation_content := '스마트 컨트랙트 개발의 기초부터 실제 배포까지 전반적인 프로세스를 잘 배웠습니다.';
            WHEN 4 THEN v_evaluation_content := '블록체인 및 스마트 컨트랙트의 실제 적용 사례를 통해 현업에서 활용할 수 있는 지식을 얻었습니다.';
            WHEN 5 THEN v_evaluation_content := '블록체인 기술과 스마트 컨트랙트 개발에 대한 깊이 있는 이해를 얻었고, 실무에 바로 적용할 수 있는 수준에 도달했습니다.';
        END CASE;

        -- 평가일: 2024-07-05 이후 2개월 이내
        v_evaluation_date := TO_DATE('2024-07-05', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 61));  -- 1~60일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 13;  -- 풀스택 웹개발 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..4 LOOP  -- 4명만 평가
        -- 수료 상태이고, 과정번호가 13인 학생 중에서 101번부터 120번 사이에서 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 121 AND 140
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~5 사이 랜덤으로 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (풀스택 웹개발 과정에 맞는 평가 항목)
        CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
            WHEN 1 THEN v_evaluation_content := '풀스택 웹개발 과정은 기술적인 깊이가 부족했습니다. 프론트엔드와 백엔드의 연동이 더 명확히 설명되었으면 좋겠습니다.'; 
            WHEN 2 THEN v_evaluation_content := '웹개발의 기본적인 프레임워크와 툴들을 배울 수 있었으나, 실습 시간이 부족하여 실무에 적용하는 데 어려움이 있었습니다.'; 
            WHEN 3 THEN v_evaluation_content := '프론트엔드와 백엔드를 모두 다룰 수 있어서 유익했으나, 각 기술에 대한 깊이는 부족했던 것 같습니다.'; 
            WHEN 4 THEN v_evaluation_content := '풀스택 웹개발 과정에서 다양한 기술들을 배울 수 있었습니다. 특히 프론트엔드와 백엔드의 연결에 대한 이해가 많이 향상되었습니다.'; 
            WHEN 5 THEN v_evaluation_content := '풀스택 웹개발 과정은 매우 유익했습니다. 프론트엔드부터 백엔드까지, 실제 프로젝트를 진행하면서 필요한 모든 기술을 습득할 수 있었습니다.'; 
        END CASE;

        -- 평가일: 2024-11-10 이후로 랜덤 날짜 생성
        v_evaluation_date := TO_DATE('2024-11-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 31));  -- 1일부터 30일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 14;  -- AI/머신러닝 개발 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..2 LOOP  -- 2명만 평가
        -- 수료 상태이고, 과정번호가 14인 학생 중에서 141번부터 160번 사이에서 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 141 AND 160
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~5 사이 랜덤으로 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (AI/머신러닝 개발 과정에 맞는 평가 항목)
        CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
            WHEN 1 THEN v_evaluation_content := 'AI/머신러닝 개발 과정은 기초적인 부분은 다뤄졌지만, 실습이 부족하여 실제 프로젝트에서 활용하는 데 어려움이 있었습니다.'; 
            WHEN 2 THEN v_evaluation_content := 'AI/머신러닝의 기초 개념은 잘 배울 수 있었지만, 더 많은 실습과 사례 중심의 설명이 필요했습니다.'; 
            WHEN 3 THEN v_evaluation_content := '이 과정은 AI/머신러닝에 대한 기본적인 이해를 높이는 데 유익했지만, 알고리즘의 세부적인 내용이나 고급 기술에 대한 설명은 부족했던 것 같습니다.'; 
            WHEN 4 THEN v_evaluation_content := 'AI/머신러닝 개발의 전반적인 개념과 다양한 알고리즘을 배울 수 있었습니다. 실습과 이론이 잘 결합되어 유익했습니다.'; 
            WHEN 5 THEN v_evaluation_content := 'AI/머신러닝 개발 과정은 매우 유익하고 실용적이었습니다. 실습을 통해 실제 적용 가능한 기술을 익힐 수 있어, 현업에서 바로 활용 가능한 수준으로 배울 수 있었습니다.'; 
        END CASE;

        -- 평가일: 2025-01-10 이후로 랜덤 날짜 생성
        v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 20));  -- 1일부터 30일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 15;  -- 모바일 앱 개발 과정
    v_evaluation_date DATE := TO_DATE('2025-02-01', 'YYYY-MM-DD');  -- 평가일은 2025-02-01 이후로 고정
BEGIN
    -- 1명만 평가
    SELECT STUDENT_SEQ
    INTO v_student_seq
    FROM tbljoinstudentmanage
    WHERE JOIN_STATUS = '수료'
    AND COURSE_SEQ = v_course_seq
    AND STUDENT_SEQ BETWEEN 161 AND 180
    AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
    ORDER BY DBMS_RANDOM.VALUE
    FETCH FIRST 1 ROWS ONLY;

    -- 평점은 1~5 사이 랜덤으로 부여
    v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

    -- 평가 내용 (모바일 앱 개발 과정에 맞는 평가 항목)
    CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
        WHEN 1 THEN v_evaluation_content := '모바일 앱 개발 과정은 이론적인 부분이 많이 다뤄졌고, 실습 시간이 부족해 실제 프로젝트에 적용하는 데 어려움이 있었습니다.';
        WHEN 2 THEN v_evaluation_content := '앱 개발에 필요한 기본적인 기술을 배웠지만, 실습을 통해 더 많은 예제와 실전 프로젝트를 다뤄봤으면 좋겠습니다.';
        WHEN 3 THEN v_evaluation_content := '모바일 앱 개발의 전반적인 흐름을 배우는 데 유익했으며, 실습을 통해 기본적인 개발 능력을 쌓을 수 있었습니다.';
        WHEN 4 THEN v_evaluation_content := '앱 개발에 필요한 기술을 체계적으로 배울 수 있었으며, 실습을 통해 실제 앱을 개발하는 데 필요한 기본적인 능력을 향상시킬 수 있었습니다.';
        WHEN 5 THEN v_evaluation_content := '모바일 앱 개발 과정은 실제 앱 개발에 필요한 모든 기술을 다루어 매우 유익했습니다. 실습을 통해 실무에 필요한 기술을 직접 경험할 수 있어 매우 만족스러웠습니다.';
    END CASE;

    -- 평가일은 고정된 2025-02-01일 이후로 설정
    -- tblevaluation 테이블에 데이터 삽입
    INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
    VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 16;  -- 데브옵스 & 클라우드 과정
    v_evaluation_date DATE;  -- 평가일 (2025년 01월 10일 이후 20일 이내)
BEGIN
    FOR i IN 1..2 LOOP  -- 2명만 평가
        -- 2025년 01월 10일 이후 20일 이내 날짜로 평가일 랜덤 설정
        v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 21));  -- 1~20일 사이 랜덤

        -- 181번부터 200번 사이 학생 중 평가가 아직 없는 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 181 AND 200
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~5 사이 랜덤으로 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 6));

        -- 평가 내용 (데브옵스 & 클라우드 과정에 맞는 평가 항목)
        CASE v_evaluation_score
            WHEN 1 THEN v_evaluation_content := '데브옵스와 클라우드 기술에 대한 이해도가 향상되었습니다.';
            WHEN 2 THEN v_evaluation_content := '클라우드 인프라 구축 및 관리에 대한 실용적인 지식이 얻어졌습니다.';
            WHEN 3 THEN v_evaluation_content := '데브옵스와 관련된 툴들에 대한 실습이 매우 유익했습니다.';
            WHEN 4 THEN v_evaluation_content := 'CI/CD 파이프라인 설정에 대한 경험이 크게 향상되었습니다.';
            WHEN 5 THEN v_evaluation_content := '클라우드 환경에서의 효율적인 배포 및 관리 방법에 대해 많이 배웠습니다.';
        END CASE;

        -- 평가일은 위에서 설정된 랜덤 값으로 설정됨
        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 17;  -- 백엔드 개발 과정
    v_evaluation_date DATE;  -- 평가일 (2024년 11월 30일 이후)
BEGIN
    FOR i IN 1..5 LOOP  -- 5명만 평가
        -- 2024년 11월 30일 이후 평가일 랜덤 설정
        v_evaluation_date := TO_DATE('2024-11-30', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 31));  -- 1~30일 사이 랜덤

        -- 201번부터 220번 사이 학생 중 평가가 아직 없는 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 201 AND 220
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평점은 1~2 사이로 부정적인 평가만 부여
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(1, 3));  -- 1 또는 2 점

        -- 평가 내용 (부정적인 평가 내용)
        CASE v_evaluation_score
            WHEN 1 THEN v_evaluation_content := '백엔드 개발 과정은 전반적으로 이론 위주로 진행되어 실습을 통해 능력을 쌓기 어려웠습니다. 실제 업무에 적용하기엔 부족한 부분이 많았습니다.';
            WHEN 2 THEN v_evaluation_content := '강의 내용이 너무 어렵고 실습 부족으로 이해가 잘 되지 않았습니다. 예제와 프로젝트가 더 많았다면 좋았을 것입니다.';
        END CASE;

        -- 평가일은 위에서 설정된 랜덤 값으로 설정됨
        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

DECLARE
    v_evaluation_content VARCHAR2(1000);
    v_evaluation_score NUMBER;
    v_student_seq NUMBER;
    v_course_seq NUMBER := 18;  -- 백엔드 개발 (Java & Spring) 과정
    v_evaluation_date DATE;
BEGIN
    FOR i IN 1..4 LOOP
        -- 이미 평가가 존재하지 않은 학생을 랜덤으로 선택
        SELECT STUDENT_SEQ
        INTO v_student_seq
        FROM tbljoinstudentmanage
        WHERE JOIN_STATUS = '수료'
        AND COURSE_SEQ = v_course_seq
        AND STUDENT_SEQ BETWEEN 221 AND 240
        AND STUDENT_SEQ NOT IN (SELECT STUDENT_SEQ FROM tblevaluation WHERE COURSE_SEQ = v_course_seq)
        ORDER BY DBMS_RANDOM.VALUE
        FETCH FIRST 1 ROWS ONLY;

        -- 평가 점수 (1~5 랜덤 값)
        v_evaluation_score := FLOOR(DBMS_RANDOM.VALUE(3,5));

        -- 평가 내용 (백엔드 개발(Java & Spring) 과정에 맞는 평가 항목)
  CASE FLOOR(DBMS_RANDOM.VALUE(1, 6))
    WHEN 1 THEN v_evaluation_content := '블록체인 기술에 대한 이해도가 크게 향상되었으며, 스마트 컨트랙트를 활용한 자동화된 거래 시스템을 설계할 수 있게 되었습니다.';
    WHEN 2 THEN v_evaluation_content := '스마트 컨트랙트의 개념과 Solidity 언어를 배우면서 블록체인 기반 애플리케이션을 개발하는 기술을 익혔습니다.';
    WHEN 3 THEN v_evaluation_content := '이더리움 플랫폼을 사용한 블록체인 구축 및 스마트 컨트랙트 배포 경험을 통해 실제 현업에서 사용하는 기술을 실습으로 익힐 수 있었습니다.';
    WHEN 4 THEN v_evaluation_content := '블록체인과 스마트 컨트랙트 개발의 복잡한 개념이 어려워 실습에 어려움을 겪기도 했지만, 전반적인 이해는 확실히 향상되었습니다.';
    WHEN 5 THEN v_evaluation_content := '스마트 컨트랙트의 보안성과 최적화 기법에 대해 배우면서 실제 개발에서 발생할 수 있는 보안 문제를 해결하는 능력을 기를 수 있었습니다.';
END CASE;

        -- 평가일: 2024-06-15 이후 2개월 이내
        v_evaluation_date := TO_DATE('2025-01-10', 'YYYY-MM-DD') + FLOOR(DBMS_RANDOM.VALUE(1, 21));  -- 1~60일 사이 랜덤

        -- tblevaluation 테이블에 데이터 삽입
        INSERT INTO tblevaluation (EVALUATION_SEQ, STUDENT_SEQ, COURSE_SEQ, EVALUATION_SCORE, EVALUATION_CONTENT, EVALUATION_DATE)
        VALUES (SEQ_EVALUATION.NEXTVAL, v_student_seq, v_course_seq, v_evaluation_score, v_evaluation_content, v_evaluation_date);
    END LOOP;
END;
/

commit;

DECLARE
    v_student_seq NUMBER;
BEGIN
    FOR i IN 1..6 LOOP  -- 241부터 360까지 6번의 구간(20명씩)
        -- 20명씩 끊어서 학생 선택
        SELECT student_seq
        INTO v_student_seq
        FROM (SELECT student_seq
              FROM tbljoinstudentmanage
              WHERE student_seq BETWEEN (240 + (i-1)*20 + 1) AND (240 + i*20)
              AND join_status = '수강중'
              ORDER BY dbms_random.value)
        WHERE ROWNUM = 1;  -- 1명만 랜덤으로 선택
        
        -- 중도탈락 처리
        UPDATE tbljoinstudentmanage
        SET join_status = '중도탈락'
        WHERE student_seq = v_student_seq;
    END LOOP;
END;
/

수강중인 학생 중도탈락으로 변경