공부하고 전파하는 것을 좋아합니다. 빅데이터와 인공지능에 오랜 경력이 있습니다.
20년 현업 데이터분석가 경력, 5년 데이터 분석 강의!
빅데이터 및 인공지능 분야 기업 및 공공기관 자문 및 출강
빅데이터 분석기사 한권완성 필기, 실기 저자
인공지능 분야 스타트업 대표
Khóa học
Đánh giá khóa học
- [2025] SQLD All-in-One - Đỗ ngay lần đầu dành cho người không chuyên
- [2025] SQLD All-in-One - Đỗ ngay lần đầu dành cho người không chuyên
- [2025] SQLD All-in-One - Đỗ ngay lần đầu dành cho người không chuyên
- [2025] SQLD All-in-One - Đỗ ngay lần đầu dành cho người không chuyên
- [2025] SQLD All-in-One - Đỗ ngay lần đầu dành cho người không chuyên
Bài viết
Hỏi & Đáp
계층형 질의 질문입니다.
안녕하세요. 질문에 아래와 같이 답변 드립니다. 답변이 도움이 되었으면 좋겠네요. 감사합니다. 다른 강의에서 Prior 자식 = 부모가 순방향이라고 하는 경우가 있나 보네요. 제가, 해당 강의를 듣지 않았기 때문에 뭐라고 말씀드리기는 어려울 거 같습니다.. 일반적으로 설명하자면, Prior 라는 키워드는 이전 행을 의미합니다. 만약 Prior empno = mgr (Prior 부모 = 자식)과 같이 작성하면, 이전 행의 사원 번호와 현재 행의 매니저 번호가 동일한 값을 찾는 방식으로 전개합니다. 이는 순방향입니다. 이때 시작점은 Start with mgr is null로 표현합니다. 왜냐하면 최상위 매니저 번호에서 아래 쪽으로 찾아 나가기 때문입니다.만약 Prior mgr = empno (Prior 자식 = 부모)와 같이 찾아갈 경우 역방향 전개입니다. 이때 시작점은 특정 지점(ex.start with ename = 'SMITH')을 선택합니다. 왜냐하면 특정 행에서 부터 상위로 찾아나가는 방식으로 이전 행의 매니저 번호와 현재 행의 사원번호가 동일한 값을 기준으로 찾기 때문입니다.순방향 역방향은 단순히 Prior 키워드만 가지고 판단하기는 어렵습니다. Start with 구문의 시작점을 보고 함께 판단해야 합니다. Prior 키워드만 사용해서 판단하기 때문에 매우 혼란스러운 경우가 생기는 것 같습니다. 노랭이 문제집의 63번 문제 보기 4번은 2군데가 잘못되어 있습니다. 보기 4번: ④ 오라클의 계층형 질의문에서 PRIOR 키워드는 CONNECT BY 절에서만 사용될 수 있으며, PRIOR 자식 = 부모 형태로 사용하면 순방향 전개로 수행된다.1) 첫 번째 잘못된 부분은 'Prior 키워드가 Connect By 절에서만' 사용될 수 있다고 한 부분입니다. Prior 키워드는 Select 절에서도 사용될 수 있습니다. 이때 Prior 키워드는 현재 행의 부모(이전) 행의 값을 가져오는 용도로 사용합니다. 노랭이 해설지에는 이 부분에 대한 설명만 제공하고 있습니다. 2) 두 번째 잘못된 부분은 'Prior 자식 = 부모 형태로 사용하면 순방향 전개로 수행된다' 라고 한 것입니다. 순방향은 Prior 부모 = 자식입니다. 부모 행을 기준으로 자식을 찾아나가기 때문에 순방향입니다. 역방향은 Prior 자식 = 부모입니다. 자식을 기준으로 부모행을 찾아나가기 때문에 역방향입니다. (아마도 Prior 키워드만 가지고 순방향, 역방향을 알기가 어렵기 때문에 위 1)번만 설명한게 아닌가 짐작해봅니다)참고로.. 위 1번과 2번을 확인할 수 있는 쿼리를 아래에 작성해두었습니다.-- 순방향 전개 SELECTLEVEL,LPAD(' ', (LEVEL-1)*4) || ENAME AS "직원명",EMPNO,MGR,-- (1) 현재 행의 상사(부모)의 ENAME 값을 가져옵니다.PRIOR ENAME AS "직속_상사명"FROM EMP START WITH MGR IS NULL -- 최상위(루트)는 MGR이 NULL인 KINGCONNECT BY PRIOR EMPNO = MGR; -- 순방향 전개 (부모.EMPNO = 자식.MGR); -- 역방향 전개 SELECTLEVEL,LPAD(' ', (LEVEL-1)*3) || ENAME AS 조직도,EMPNO,MGRFROM EMP START WITH ENAME = 'SMITH' -- SMITH를 최하위 노드로 지정 (LEVEL 1)CONNECT BY PRIOR MGR = EMPNO -- 역방향 전개 (자식.MGR = 부모.EMPNO). 자식(MGR)을 기준으로 부모(EMPNO)를 찾으며 위로 전개 (역방향)ORDER SIBLINGS BY EMPNO;emp 테이블 데이터는 아래 링크에서 확인하시면 되겠습니다.https://java7.tistory.com/164
- 0
- 2
- 9
Hỏi & Đáp
Part 2 > Chapter 3 단원 정리 문제
안녕하세요. Part2 Chapter 3의 문제중에, 2번 같은 경우는 충분히 이견을 제시할 수 있을 것 같네요. 좀 애매한 면이 있어서요. 실제 시험에서도 이런 경우가 발생하는 데요. 이의를 제기할 경우 모두 정답으로 처리하는 경우가 있습니다. 참고하시구요. 문제는 좀더 명확히 변경을 해두었습니다. 4, 5번은 실수가 있었습니다. 이것 또한 수정하여 반영해두었습니다. 감사드립니다.
- 0
- 2
- 33
Hỏi & Đáp
챕터1. SQL 기본 단원정리문제 53번
안녕하세요. 쿠라와님. 교안 내용을 알려주셔서 감사합니다. 아래 링크에 이메일을 하나 남겨주세요. 작은 선물을 보내드리겠습니다. https://forms.gle/rXRi6TpFTUxd7sW46감사합니다.
- 0
- 3
- 30
Hỏi & Đáp
챕터1. SQL 기본 단원정리문제 53번
안녕하세요. 데이터코드랩입니다. 말씀하신 내용이 맞습니다. 해당 문제는 이미 정정해서 교안을 갱신해 둔 상태에요. 아마도 다운로드 받으신 파일이 수정 전의 것 같습니다. 새로 다운 받으시면 정정된 것을 사용하실 수 있습니다. 시험 합격 응원할게요 감사합니다.
- 0
- 3
- 30
Hỏi & Đáp
챕터1. SQL 기본 단원정리문제 23번, 50번
안녕하세요. 데이터코드랩입니다. 네 말씀하신 내용이 맞습니다. 오류가 있었어요. 그런데, 이미 수정해서 올려 놓았던 내용인데요. 아마도 교안이 수정하기 전 파일로 보입니다. 새로 받으시면 정정 된 내용을 보실 수 있습니다. 시험이 얼마 안 남았네요 응원하겠습니다 감사합니다.
- 0
- 2
- 26
Hỏi & Đáp
챕터1. SQL 기본 단원정리문제 23번
안녕하세요. 데이터코드랩입니다. 네 말씀하신 내용이 맞습니다. 해당 문제는 얼마전에 정정해서 다시 올려두었는 데요. 아마도 다운로드 받으신 교안이 과거 버전인 듯 합니다. 다시 다운로드 받으시면 정정된 교안을 사용하실 수 있습니다. 감사합니다.
- 0
- 2
- 29
Hỏi & Đáp
문제에 문제가 있는 것 같습니다.
안녕하세요. Jeongin님. Null 값은 가장 큰 값으로 인식됩니다. 그래서, 말씀하신 것처럼 ASC 로 정렬하게 되면 가장 뒤에 나오는 것이 맞습니다. 정답이 잘 못 표기가 되어 있었습니다. 실수한 내용은 바로 잡아서 반영해 두었습니다. 바로 잡아주신 것이 많네요. 감사한 마음에 선물을 하나 보내드리려고 합니다. 아래 링크에 이메일 주소만 하나 남겨주세요. 감사합니다. https://forms.gle/rXRi6TpFTUxd7sW46그리고, 아래의 쿼리 참고하십시오. DROPTABLEEMPLOYEES; -- 1. EMPLOYEES 테이블 생성CREATETABLEEMPLOYEES (IDNUMBERPRIMARYKEY,NAMEVARCHAR2(50),DEPT_IDNUMBER); -- 2. SALARIES 테이블 생성CREATETABLESALARIES (EMP_IDNUMBERPRIMARYKEY,SALARYNUMBER); -- 3. EMPLOYEES 테이블에 데이터 삽입INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID) VALUES (1, 'Alice', 101);INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID) VALUES (2, 'Bob', 102);INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID) VALUES (3, 'Carol', 103); -- 4. SALARIES 테이블에 데이터 삽입INSERTINTOSALARIES (EMP_ID, SALARY) VALUES (1, 6000);INSERTINTOSALARIES (EMP_ID, SALARY) VALUES (2, 4500);INSERTINTOSALARIES (EMP_ID, SALARY) VALUES (3, NULL); -- 5. 데이터 삽입 확인SELECT * FROMEMPLOYEES;SELECT * FROMSALARIES; -- 6. LEFT JOIN 실행 (문제에 제시된 쿼리)SELECTE.NAME, S.SALARYFROMEMPLOYEESELEFTJOINSALARIESSONE.ID = S.EMP_IDORDERBYS.SALARYASC;
- 0
- 2
- 35
Hỏi & Đáp
여기도 문제가 있는거 같습니다.
안녕하세요. Jeongin님. 말씀하신 내용이 맞습니다. Order by 의 내용을 잘 못 기입되었습니다. 잘못된 부분은 수정하여 업데이트 해 두었습니다. 참고하시라고 아래 쿼리 넣어두었습니다. 감사합니다. -- 1. EMPLOYEES 테이블 생성CREATETABLEEMPLOYEES (IDNUMBERPRIMARYKEY,NAMEVARCHAR2(50),DEPT_IDNUMBER,SALARYNUMBER); -- 2. DEPARTMENTS 테이블 생성CREATETABLEDEPARTMENTS (DEPT_IDNUMBERPRIMARYKEY,DEPT_NAMEVARCHAR2(50)); -- 3. EMPLOYEES 테이블에 데이터 삽입INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID, SALARY) VALUES (1, 'Alice', 101, 3000);INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID, SALARY) VALUES (2, 'Bob', NULL, 2500);INSERTINTOEMPLOYEES (ID, NAME, DEPT_ID, SALARY) VALUES (3, 'Carol', 103, 4000); -- 4. DEPARTMENTS 테이블에 데이터 삽입INSERTINTODEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (101, 'HR');INSERTINTODEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (103, 'Finance');-- 추가적인 부서 데이터 (조인되지 않는 경우를 확인하기 위해)-- INSERT INTO DEPARTMENTS (DEPT_ID, DEPT_NAME) VALUES (102, 'Marketing'); -- 5. 데이터 삽입 확인SELECT * FROMEMPLOYEES;SELECT * FROMDEPARTMENTS; -- 6. FULL OUTER JOIN 실행 (문제에 제시된 쿼리)SELECTE.NAME, D.DEPT_NAMEFROMEMPLOYEESEFULLOUTERJOINDEPARTMENTSDONE.DEPT_ID = D.DEPT_IDORDERBYD.DEPT_NAME; -- 7. (선택 사항) 실습 후 테이블 삭제-- DROP TABLE EMPLOYEES;-- DROP TABLE DEPARTMENTS;
- 0
- 2
- 41
Hỏi & Đáp
문제가 잘못된 것 같습니다.
안녕하세요. Jeongin님. 데이터코드랩입니다. 문제에 오기가 있었습니다. Monitor 의 값이 100으로 표시가 되어야 하는데, 실수를 했네요. 말씀하신 데로, Monitor의 값이 150 인 경우 정답은 Mouse, Monitor가 되어야 합니다. 잘 못된 부분은 보완하여 업데이트 해두었습니다. 알려주셔서 감사드리구요. 시험 잘 보시길 응원할게요. 감사합니다. :)
- 0
- 2
- 35
Hỏi & Đáp
64번 설명에서
안녕하세요. 질문을 잘 못 이해했네요.64번 문제 제가 확인을 해봤어요. 말씀하신데로, 제가 설명할 때 실수한 게 있었네요.위 쪽 쿼리는 순방향이 맞고, 아래쪽 쿼리는 역방향이 맞습니다. (강의 자료는 수정해두었습니다)둘다 역방향으로 보인다고 말씀 하신 것은, 제가 답변 단 아래의 설명을 참고해주세요. 감사드립니다.
- 1
- 3
- 46