여러분들을 도와드릴 튜터입니다.
20년 넘는 현업 경험과 강의 경력의 데이터 분석가 과정 튜터
SQL200제 책의 저자 - 정보문화사
예제가 가득한 파이썬 길라잡이의 저자 - 정보문화사
유튜브 코딩 대한민국 판다스 100제 유튜버
사랑하는 19기 데이터 분석반 학생들의 밝은 미래를 진심으로 응원합니다.
강의
수강평
- 실무에서 바로 쓰는 SQL [SQL200제 저자 직강]
- 실무에서 바로 쓰는 SQL [SQL200제 저자 직강]
게시글
질문&답변
수업노트는 어디서 볼 수 있나요?
(사진)네 ~ 저도 확인해보니 마우스 스크롤을 내리면 보이네요. ^^ 마우스 휠을 위아래로 내리거나 올려보시겠어요 ^^
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 9
질문&답변
accuracy_score() 사용 시 인자 순서 오류 관련
안녕하세요, 꼼꼼하게 확인해 주셔서 진심으로 감사드립니다! ^^말씀하신 내용이 맞습니다. sklearn 공식 문서 기준으로accuracy_score(y_true, y_pred) — 실제값이 먼저, 예측값이 나중이 올바른 순서입니다.강의에서 제가 순서를 반대로 사용했는데, accuracy_score는 대칭 함수라 결과값 자체는 동일하게 나오지만, sklearn 컨벤션에 맞지 않는 코드였습니다.precision_score, recall_score, f1_score 등 다른 평가 지표에서는 순서가 바뀌면 결과도 달라지므로, 처음부터 올바른 순서로 익히는 것이 중요합니다.정확하게 주셔서 감사합니다!
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 29
질문&답변
함수기반 인덱스
안녕하세요. 질문 정말 감사드립니다. 제 생각으로 답변드리면 다음과 같습닏나. 함수기반 인덱스는 실무에서 무조건 피해야 하는 대상이라기보다는, 마지막에 꺼내는 실무 카드에 가깝다고 봅니다.결론부터 말하면, 함수기반 인덱스를 피해야 한다기보다는 먼저 SQL을 고칠 수 있는지부터 확인하는 게 맞습니다.예를 들어 WHERE 절에서 컬럼에 함수를 씌우고 있다면, 먼저 조건식을 함수 없이 바꿀 수 있는지, 데이터 저장 방식을 정리할 수 있는지, 일반 인덱스로 해결할 수 있는지부터 봐야 합니다.그런데 현실적으로 SQL을 고칠 수 없는 경우도 많습니다.대표적으로는 첫째, 레거시 코드라서 애플리케이션 SQL을 수정하기 어려운 경우입니다. 이미 여러 시스템에서 같은 SQL을 사용하고 있거나, 배포 리스크가 커서 WHERE 절을 바꾸기 어려운 상황이라면 함수기반 인덱스가 현실적인 해결책이 될 수 있습니다.둘째, 배치성 레포트나 조회 전용에 가까운 테이블입니다. INSERT, UPDATE, DELETE가 거의 없고, 특정 조건으로 반복 조회되는 테이블이라면 함수기반 인덱스를 만들어 검색 성능을 개선하는 것이 충분히 합리적입니다.다만 함수기반 인덱스를 만들면 DML 비용과 인덱스 관리 비용이 늘어납니다. 그래서 OLTP처럼 데이터 변경이 많은 테이블에 습관적으로 만드는 것은 조심해야 합니다.정리하면, 함수기반 인덱스는 나쁜 인덱스가 아닙니다. 다만 먼저 SQL 수정 가능성, 데이터 정합성, 일반 인덱스 활용 가능성, DML 비용을 검토한 뒤에 사용하는 것이 좋습니다.즉, SQL을 고칠 수 있다면 SQL부터 고치고, SQL을 고칠 수 없고 조회 성능 문제가 명확하다면 함수기반 인덱스를 만드는 것이 맞습니다. ^^
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 29
질문&답변
정규화 여부
안녕하세요, 파타곤이야님! 질문 주신 7회 작업형 1의 1번 문제는 '데이터를 50:50으로 분할한 후 각 그룹의 결측치를 중앙값과 최댓값으로 채우고 표준편차의 합을 구하는 문제'였습니다. 따라서 이 문제에서는 정규화 과정이 포함되지 않는 것이 맞습니다. 여러 문제를 풀다 보면 다른 회차의 기출문제와 기억이 조금 섞이실 수 있으니 걱정하지 않으셔도 됩니다! 정규화 여부는 문제에 나와 있나요? 라는 핵심 질문에 답을 드리자면, 네, 무조건 문제에 명시됩니다. 빅데이터분석기사 실기 시험은 채점 플러그인을 통해 최종 제출한 '단 하나의 숫자(값)'가 정답과 일치하는지 자동 채점하는 방식입니다. 정규화(Min-Max Scaling)나 표준화(Standard Scaling) 처리를 해야만 하는 문제라면, 발문이나 조건에 반드시 명확한 문구로 제시됩니다. 따라서 시험장에서는 임의로 '이 데이터는 정규화를 해야 할까?' 고민하실 필요가 전혀 없습니다. 문제에 '정규화' 혹은 '변환'이라는 단어가 직접적으로 언급되어 있지 않다면, 정규화를 진행하지 않고 주어진 요구사항(결측치 처리, 통계량 추출 등)만 순서대로 구현하시면 됩니다. 남은 기간 차분하게 준비하셔서 좋은 결과 있으시길 바랍니다.
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 45
질문&답변
코드 자동완성 or 추천 기능
네, 빅데이터분석기사 실기 시험환경은 미리 체험해볼 수 있는 사이트가 있습니다. 구름 기반 체험환경이고, 아래 주소로 접속하시면 됩니다. https://dataq.goorm.io/exam/3/체험하기/quiz/1 접속 후 import pandas as pd를 입력하고 pd.를 직접 쳐보시면 자동완성이 되는지 확인할 수 있습니다. 제가 확인해보니 시험 환경은 Jupyter Notebook이 아닌 구름(Goorm) IDE 기반이며, 빅데이터분석기사 실기에서는 각종 자동완성이 불가능하네요. 라이브러리 이름, 함수명 등을 모두 외워서 입력해야 합니다. 감사합니다
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 42
질문&답변
7회 기출문제 작업형3유형 2번째문제
네 ~ 맞습니다. 코렙에서 만들어지는 아래의 코드는 실행할 때마다 무작위 데이터를 새로 만듭니다. import pandas as pd import numpy as np # 가상의 데이터 생성 및 저장 data = { 'Sales': np.random.uniform(1000, 5000, 100), 'Cost': np.random.uniform(500, 3000, 100), 'Profit': np.random.uniform(200, 1500, 100), 'GrowthRate': np.random.uniform(0.1, 1.5, 100), 'EmployeeCount': np.random.randint(50, 200, 100) } df = pd.DataFrame(data) df.to_csv('financial.csv', index=False) # 데이터 불러오기 및 상관관계 계산 df = pd.read_csv('financial.csv') 그래서 financial.csv 파일의 값이 매번 달라지고, 그 결과로 상관계수도 달라지고, 회귀모델의 결정계수도 달라집니다.즉, 강의자와 수강생이 같은 코드를 실행해도 financial.csv 안의 데이터가 서로 다르면 답도 달라집니다. 그래서 저하고도 결과가 다르고 코랩을 다시 시작하시면 또 달라질겁니다. 만약 고정된 결과값을 보고 싶으시면 랜덤 시드를 고정하는 것입니다.맨 위에 이것을 추가하면 됩니다. np.random.seed(0)시험때는 고정된 데이터가 나오니 걱정하지 마시고 이 방법으로 연습하시면 됩니다. 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 45
질문&답변
맥북용 자료 부탁드립니다.
안녕하세요! 맥북에서 수업 환경을 구성하고 계시는군요. ^^원본 mksample.sql 파일 내부에 윈도우 경로(C:\sqlt...)가 하드코딩되어 있어, 맥북에서 그대로 실행하면 경로를 찾지 못하는 오류가 발생합니다.맥북(Linux 기반) 환경에 맞춰 경로를 수정한 mksample_mac.sql 파일을 준비했으니, 아래 순서에 따라 차근차근 진행해 보세요.1. 파일 다운로드아래 링크를 클릭하면 코드 내용이 미리보기로 보입니다. 당황하지 마시고 오른쪽 상단의 다운로드 버튼(↓) 을 클릭하여 mksample_mac.sql 파일을 다운로드하세요.https://drive.google.com/file/d/1Y2g4R7RSKcO4eNxYkuRnx8zABqq_SVut/view?usp=sharing다운로드가 완료되면 다운로드 폴더에 mksample_mac.sql 파일이 저장됩니다.2. 컨테이너 이름 확인터미널을 열고 아래 명령어로 현재 실행 중인 Docker 컨테이너 이름을 확인하세요.docker ps NAMES 항목에 보이는 이름이 컨테이너명입니다. 다음 단계에서 사용하니 기억해 두세요.3. 다운받은 파일을 Docker 컨테이너로 복사터미널에서 아래 명령어로 방금 다운받은 mksample_mac.sql 파일을 컨테이너 안으로 복사합니다. (컨테이너명 부분을 2번에서 확인한 이름으로 바꿔주세요.)한글 폴더 경로일 경우:docker cp ~/다운로드/mksample_mac.sql 컨테이너명:/sqlt/db-sample-schemas-21.1/db-sample-schemas-21.1/mksample_mac.sql 위 명령어가 안 되면 아래 명령어로 해보세요.docker cp ~/Downloads/mksample_mac.sql 컨테이너명:/sqlt/db-sample-schemas-21.1/db-sample-schemas-21.1/mksample_mac.sql 오류 없이 명령어가 실행되면 파일이 정상적으로 복사된 것입니다.4. 컨테이너 접속아래 명령어로 컨테이너 안으로 접속합니다.docker exec -it 컨테이너명 bash 5. 작업 디렉토리로 이동컨테이너 안에서 아래 명령어로 스크립트 파일이 있는 디렉토리로 이동합니다.cd /sqlt/db-sample-schemas-21.1/db-sample-schemas-21.1 6. sqlplus 실행아래 명령어로 sqlplus에 관리자 권한으로 접속합니다.sqlplus / as sysdba 7. 스크립트 수행sqlplus 접속 후 아래 명령어를 차례대로 입력하세요.먼저 system 계정의 비밀번호를 설정합니다.alter user system identified by oracle; 그리고 수정된 스크립트를 실행합니다.@mksample_mac.sql 8. 완료 확인스크립트가 모두 실행된 후, 마지막에 아래 메시지가 출력되면 환경 구성이 정상적으로 완료된 것입니다.69행이 선택되었습니다. 진행하시다가 막히는 부분이 생기면, 발생한 오류 메시지를 캡처해서 질문 남겨주세요! 😊
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 56
질문&답변
22번문제 질문있습니다.
네~ 답변드립니다. where ename = '%JACK%' 를where ename like '%JACK%' 로 해보시겠어요? 와일드 카드는 이퀄이 아니라 like를 쓸때 특수문자 퍼센트가 아니라 와일드 카드로 인식합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 72
질문&답변
그 EXISTS의 힌트절에 NESTED LOOP를 쓰는이유 질문
네, 맞습니다. 질문하신 논리적인 접근이 정확합니다.기본적으로 EXISTS는 메인 쿼리의 건별로 값을 확인하는 상호연관(Correlated) 특성이 있어 NL 조인의 매커니즘과 유사하고, IN은 독립적인 집합을 먼저 구성하는 성격이라 HASH 조인과 잘 어울리는 것이 사실입니다.다만 실무 튜닝 관점에서 조금 더 덧붙이자면, 옵티마이저가 서브쿼리를 일반 조인으로 변환(Unnesting)하고 나면 문법보다는 '데이터의 양'과 '인덱스 유무'가 더 중요해집니다. 따라서 EXISTS라도 대용량 처리가 필요하면 HASH_SJ가 유리할 수 있으며, 제가 NL_SJ를 쓴 이유는 문법 때문이라기보다 인덱스를 타고 빠르게 응답을 줘야 하는 상황을 가정했기 때문입니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 105
질문&답변
안녕하세요 NESTED LOOP 문제에서
안녕하세요. 신승호님 ! 올려주신 쿼리와 힌트 사용을 보니 인덱스와 실행 계획의 작동 원리를 아주 정확하게 이해하고 계신 것 같네요. 결론부터 말씀드리면 현재 문제의 테이블 구조와 데이터 분포상에서는 아주 훌륭한 튜닝이며, 논리적으로도 흠잡을 데 없는 풀이입니다. 버퍼수가 획기적으로 줄어든 가장 큰 이유는 쿼리 처리에 필요한 모든 컬럼이 인덱스 안에 다 포함되어 있어서, 실제 테이블 블록을 읽으러 가는 랜덤 액세스 과정이 완전히 생략되었기 때문입니다. 굳이 무거운 테이블을 뒤질 필요 없이 가벼운 인덱스만 읽고 처리를 끝내는 소위 커버링 인덱스 효과를 제대로 활용하신 거죠. 또한 선두 컬럼인 DEPTNO가 조건절에 없는데도 INDEX_SS가 효율적이었던 건, DEPTNO의 종류가 몇 개 되지 않기 때문입니다. 오라클이 몇 번의 점프만으로도 원하는 데이터를 찾을 수 있는 상황이라 굳이 새로운 인덱스를 만들지 않고 기존 인덱스를 재활용하는 방식도 전략적으로 아주 좋은 선택이었습니다. 다만 실무에서 만약 부서의 개수가 수천, 수만 개로 늘어난다면 그때는 스킵 스캔의 효율이 떨어질 수 있다는 점만 참고로 알아두시면 완벽하겠습니다. 데이터의 특성까지 고려한 아주 센스 있는 풀이입니다. 감사합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 87





![Thumbnail image of the 실무에서 바로 쓰는 SQL [SQL200제 저자 직강]](https://cdn.inflearn.com/public/courses/335513/cover/e2411bc7-040f-4c60-bbe9-2c254f0f8b18/335513.png?w=148)
