묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
쿼리 튜닝 관련 질문 (limit)
안녕하세요 강사님 좋은 강의 정말 감사드립니다. 실습 따라면서 튜닝을 익혀가고있는데 이번 강의에서 이해되지 않는 부분이 있어 질문 남깁니다.일단 저는 MariaDB를 이용하여 실습을 하고 있습니다 죄송합니다 ㅠ -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100;두 쿼리 실행 속도에 별로 차이가 없어서 1) students, scores 두 테이블 각각 데이터 300만개로 늘리고 2) 두 쿼리 모두 동일하게 limit 10을 붙여줬더니 갑자기 성능 차이가 엄청나게 났습니다. -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1 LIMIT 10; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 limit 10;제가 궁금한 것은 limit 10을 붙이면 튜닝을 하든 안하든 실행 속도가 더 줄어들어야 할 것 같은데 튜닝 전 쿼리가 갑자기 1분넘게 소요되더라고요.튜닝 후 쿼리는 limit을 붙이나 안붙이나 별 차이가 없는데 튜닝 전 쿼리는 왜 limit을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..?? 확인해주시고 답변 주시면 많은 도움 될 것 같습니다 감사합니다!
-
해결됨데이터 분석을 위한 SQL 문제풀이 (Advent of SQL 2024)
테스트 케이스를 통과하지 못했습니다.
코드 동일하게 작성하였는데 통과 안되네요.레코드 개수가 다릅니다. (제출 : 1402개, 정답 : 1401 개) 뭐가 문제일까요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
강의기간 연장문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요저는 현재 인프런에서 데이터리안 SQL 시리즈 강의를 수강 중인 대학생입니다. 해당 강의를 통해 SQL 기초부터 실전 활용까지 체계적으로 배우며 많은 도움을 받고 있습니다.다만, 현재 대학 중간고사 기간으로 인해 학업 일정이 매우 바쁜 상황이라 강의를 꾸준히 수강하기 어려운 상황입니다. 강의 만료일이 얼마 남지 않았는데 아직 끝까지 수강하지 못해 아쉬운 마음이 큽니다.혹시 가능하다면 강의 수강 기간을 조금만 연장해주실 수 있을지 요청드립니다. 연장해주신다면 남은 기간 동안 학업이 마무리된 후 더욱 집중해서 학습을 이어갈 수 있을 것 같습니다.항상 좋은 강의 제공해주셔서 감사드리며, 바쁘시겠지만 검토 부탁드립니다.감사합니다.
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
Weather Observation Station 12 질문
해당 문제에서 WHERE 쿼리 여러 많은 조건을 각각AND로 일일이 나열하셨는데 이걸 IN()처럼 간편하게 추출하는 방법은 없나요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
COLUMN에 대해 이해 안됨
여기서 문제에 칼럼을 가져오라고 하는데 맨 초반부 COLUMN이 세로 열이다라고 하셨는데 그렇게 따지면 필드랑 타입이 COLUMN 아닌가요? 설명에 모순이 있어 불편하네요.... 대체적으로 생초보에게는 어렵습니다.왜 갑자기 시티랑STATE가 COLUMN 인가요
-
미해결실습으로 손에 잡히는 SQLD(2과목)
학생,등록,수업 데이터세트 로드
안녕하세요..로드했는데 권한이 불충분하다고 뜨는데 이거 전에 로드 해야하는게 있었을까요...?
-
미해결실리콘밸리 데이터 리더가 알려주는 Airflow 기초
본문과 같은 메시지가 뜨면서, 어느 순간부터 계속 안되는데, 어떤 이유일까요 ㅠㅠ
[2025-04-07T14:51:04.313+0000] {taskinstance.py:3310} ERROR - Task failed with exceptionTraceback (most recent call last): File "/opt/airflow/dags/yfinance_to_snowflake_fullrefresh.py", line 56, in load raise e File "/opt/airflow/dags/yfinance_to_snowflake_fullrefresh.py", line 41, in load cur.execute(f"USE SCHEMA {schema};") File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/cursor.py", line 1087, in execute Error.errorhandler_wrapper(self.connection, self, error_class, errvalue) File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 284, in errorhandler_wrapper handed_over = Error.hand_to_other_handler( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 339, in hand_to_other_handler cursor.errorhandler(connection, cursor, error_class, error_value) File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 215, in default_errorhandler raise error_class(snowflake.connector.errors.ProgrammingError: 002043 (02000): 01bb881b-0000-c602-0000-cde100062082: SQL compilation error:Object does not exist, or operation cannot be performed. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/airflow/.local/lib/python3.12/site-packages/airflow/models/taskinstance.py", line 767, in executetask result = executecallable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/models/taskinstance.py", line 733, in executecallable return ExecutionCallableRunner( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/operator_helpers.py", line 252, in run return self.func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/models/baseoperator.py", line 406, in wrapper return func(self, args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/decorators/base.py", line 266, in execute return_value = super().execute(context) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/models/baseoperator.py", line 406, in wrapper return func(self, args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/operators/python.py", line 238, in execute return_value = self.execute_callable() ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/operators/python.py", line 256, in execute_callable return runner.run(*self.op_args, **self.op_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/operator_helpers.py", line 252, in run return self.func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/airflow/dags/yfinance_to_snowflake_fullrefresh.py", line 62, in load cur.execute(f"REMOVE {table_stage}/{file_name}") File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/cursor.py", line 1087, in execute Error.errorhandler_wrapper(self.connection, self, error_class, errvalue) File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 284, in errorhandler_wrapper handed_over = Error.hand_to_other_handler( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 339, in hand_to_other_handler cursor.errorhandler(connection, cursor, error_class, error_value) File "/home/airflow/.local/lib/python3.12/site-packages/snowflake/connector/errors.py", line 215, in default_errorhandler raise error_class(snowflake.connector.errors.ProgrammingError: 090105 (22000): 01bb881b-0000-c619-0000-cde10006306e: Cannot perform STAGE RM. This session does not have a current database. Call 'USE DATABASE', or use a qualified name.Snowflake 세션에서 데이터베이스 또는 스키마가 제대로 설정되지 않아 발생한 문제로 보인다는데;;; 뭔가 실행에 이상이 있는건지;;;;
-
해결됨비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
페이지기반 페이지네이션 쿼리를 최적화하고 싶습니다.
게시판 비슷한 기능을 구현중인데 아무래도 커서기반보다는 페이지를 원하는대로 넘나들 수 있는 페이지기반 페이지네이션을 구현하고 싶어서 구현은 했는데 대용량 데이터에는 맞지 않은 듯해서 어떻게 최적화를 하면 좋을지 고민하고 있습니다.현재 저는 Postgres DB를 사용하고 있으며SQL를 전부 올리기보다 고민하고 있는 부분에 대해서만 간략히 적도록 하겠습니다.api에서는 SQL를 연속으로 두번 실행시키고 있습니다.1. 조건에 맞는 모든 ROW를 COUNT2. 1페이지당 사이즈와 현재 페이지로 OFFCET FETCH NEXT ROWS ONLY 절을 사용해서 ROW를 건너뛰고 검색을 하고 있는데지금 구현대로면 최악의 경우일때는 거의 DB 전체를 두번 조회하는거나 다름 없을 것 같습니다.사이드 프로젝트일때는 상관없을 것 같긴한데 실무에서는 어떤방식으로 최적화가 가능할까요?검색을 해보니 대용량 데이터에서는 커서기반으로 하라는 의견이 많은 것 같은데 그래도 페이지기반의 장점을 살리고 싶습니다.
-
해결됨실전 jOOQ! Type Safe SQL with Java
Routines 관련 질문
안녕하세요!이번에 jooq를 도입하게 되어 강의를 보며 천천히 따라해보고 있습니다.현재 Flyway + DDLDatabase(testcontainers 사용안함) 방식으로 dsl을 생성하는 것을 테스트하고 있는데요..flyway migration 파일(.sql)에 프로시저와 함수 생성문을 넣고 코드 생성을 실행 하니 상용 버전을 이용하라고 메시지가 나오며 실행이 안되길래 공식 문서를 확인해보니 오픈소스 에디션에서는 지원을 하지 않는다고 되어있더군요 ㅠㅠ 섹션2 - 생성된 DSL 구조 살펴보기 강의에서는 DB 스캔 방식이지만 Routines 클래스가 잘 생성되는 것을 볼 수 있는데 혹 강사님께서는 시 상용 버전을 사용하신 걸까요?? 아니면 DB 스캔 방식은 상용 버전 상관없이 Routines 클래스가 생성이 되는 걸까요?
-
미해결실습으로 손에 잡히는 SQLD(2과목)
환경 설정에서 오류가 나네요ㅠㅠ
이런 오류로 진행이 안됩니다.
-
미해결데이터 분석 SQL Fundamentals
섹션5 Group by 실습-01 강의 예제 질문
안녕하세요.섹션5의 두번째 강의인 Group by 실습-01 에서 다룬 예제에 대해 질문드립니다. -- 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여select b.empno, max(b.ename) as ename, avg(c.sal) as avg_sal from hr.dept ajoin hr.emp b on a.deptno = b.deptnojoin hr.emp_salary_hist c on b.empno = c.empnowhere a.dname in('SALES', 'RESEARCH')group by b.empnoorder by 1; 이 쿼리에서 b.ename을 집계함수에 넣지 않고 아래와 같이 group by에 넣어서 출력하는 방식으로 해봤는데 결과가 동일하게 나옵니다. select b.empno, b.ename, avg(c.sal) as avg_sal from hr.dept ajoin hr.emp b on a.deptno = b.deptnojoin hr.emp_salary_hist c on b.empno = c.empnowhere a.dname in('SALES', 'RESEARCH')group by b.empno, b.enameorder by 1; 두 쿼리 중 실무적으로 더 권장하는 방법이 있으신가요? 성능 혹은 기능 등의 차이가 있는지도 궁금합니다.
-
미해결실습으로 손에 잡히는 SQLD(2과목)
노랭이 39번 문제풀이 관계규칙
안녕하세요.수업에 배운내용과 다르게 알고있는 질문 일 수 있지만 궁금한사항이 있어 질문드립니다.학생과 수강신청관계가 N:M 관계가 아닌지 헷갈립니다. 하나의 학생은 여러개의 수강신청을 신청한다.하나의 수강신청은 여러명의 의해 신청하게된다여기서 N:M 관계가 아닌가요?
-
해결됨초보자를 위한 BigQuery(SQL) 입문
17번 문제 질문드립니다.
안녕하세요. 아래 코드를 작성하고 돌려보니 아래와 같이 결과가 나옵니다.SELECT trainer_id, pokemon_id, status, COUNTIF(status = 'Released'), COUNT(pokemon_id) FROM basic.trainer_pokemon WHERE trainer_id = 17 GROUP BY trainer_id, pokemon_id, status즉 예상되는 COUNTIF() 함수의 결과는 3,COUNT() 함수의 결과는 12 입니다.그러나 아래와 같은 코드를 돌려 집계한 결과, 다른 결과가 나옵니다.SELECT trainer_id, COUNTIF(status = 'Released'), COUNT(pokemon_id) FROM basic.trainer_pokemon WHERE trainer_id = 17 GROUP BY trainer_id ;왜 이런 문제가 발생하는지 모르겠습니다 ㅠ
-
미해결데이터 분석 SQL Fundamentals
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
안녕하세요.섹션2 조인 기반 메커니즘에서조인 실습 - 04 강의 중예제에서 질문이 있습니다. -- 고객명 Antonio Moreno이 1997년에 주문한 주문 상품 정보를 고객 주소, 주문 아이디, 주문일자, 배송일자, 배송 주소 및 -- 주문 상품 아이디, 주문 상품명, 주문 상품별 금액, 주문 상품이 속한 카테고리명, supplier명을 구할 것. select a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address, c.product_id, d.product_name, c.amount, e.category_name, f.contact_name as supplier_namefrom nw.customers ajoin nw.orders b on a.customer_id = b.customer_idjoin nw.order_items c on b.order_id = c.order_idjoin nw.products d on c.product_id = d.product_idjoin nw.categories e on d.category_id = e.category_idjoin nw.suppliers f on d.supplier_id = f.supplier_idwhere a.contact_name = 'Antonio Moreno'and b.order_date between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd') 이 예제에서 볼드친 product_id를 order_items 테이블이 아닌 products 테이블의 product_id로 끌어와도 괜찮은지 궁금합니다.결과는 동일하게 나오는데 혹시나 차이가 있는지 궁금합니다.
-
미해결이커머스 데이터로 시작하는 스토리형 SQL – BigQuery & Looker Studio 실습
섹션11 매출 대시보드 구성하기에서 강의 누락 질문
섹션11 매출 대시보드 구성하기에서첫번째 강의와 두번째 강의 사이에 강의 영상이 누락된게 있는 것 같습니다. 두번째 강의의 시작부에 강사님이 저번시간에 테마까지 변경해봤다고 하셨는데 첫번째 강의엔 테마 변경 강의 내용이 없습니다.이전에도 같은 내용의 질문을 누렸고, 검토해보겠다는 답변을 주셨는데 다시 들어가보니 아직도 동일하게 누락되어 있어 다시 질문드립니다. 빨리 완강하고 싶습니다ㅠ
-
해결됨실전 jOOQ! Type Safe SQL with Java
JOOQ 환경설정 중에 db 패스워드 관련 질문입니다.
강의에서도 그렇고 실제로 실습을 해봤을 때도 그렇고(저는 db를 로컬로 실행했습니다!) gradle 파일에 db root패스워드를 그대로 입력해야 하는 것 같은데.. :) 이 부분에 대해선 이후에 크게 문제가 없는걸까요 ㅠ ㅠ?!
-
미해결데이터 분석 SQL Fundamentals
섹션2 조인 실습 01 강의 질문
안녕하세요.섹션2 조인 실습 01 강의에서 질문이 있습니다. 조인 실습1의 예제들에서 강사님께서는 join을 사용하시는데 left join을 사용해도 괜찮은지 궁금합니다. 보통 조인 시 일반적으로 left join을 사용한다고 들어서요. 예를 들어 emp 테이블과 dept 테이블을 inner join할 경우 만약의 경우 emp 테이블에 존재하는 직원이 dept 테이블에서 누락되었다면 최종 join 테이블에도 그 직원이 누락될 수 있기 때문에 left join을 쓰는게 안전하지 않나 하는 생각이 들었습니다. 조인 실습1 예제의 4번째 예제에서 날짜 필터링 조건에서 to_date 함수를 쓰지 않고 fromdate >= '1983-01-01' 그냥 이처럼 써도 되는지 궁금합니다. 결과는 동일하게 나오지만 성능적 차이가 있거나 to_date 함수를 사용하는 것이 실무에서 많이 쓰는 방식인건지 궁금합니다. 조인실습1 문제4 - 저의 풀이부서명 SALES와 RESEARCH의 소속 직원들의 부서명, 직원번호, 직원명, JOB 그리고 과거 급여 정보중 1983년 이전 데이터는 무시하고 데이터를 추출하시오SELECTd.dname,e.empno,e.ename,e.job,esh.fromdate,esh.todate,esh.salFROM dept d JOIN emp e ON d.deptno = e.deptno JOIN emp_salary_hist esh ON e.empno = esh.empno WHERE d.dname IN ('SALES', 'RESEARCH')AND esh.fromdate >= '1983-01-01'ORDER BY d.dname, e.empno, e.ename, esh.fromdate;
-
해결됨실습으로 손에 잡히는 SQLD(2과목)
BETWEEN
안녕하세요. 궁금한게 있어서 질문드립니다.AND (sal>1200 AND sal<2500)일때 BETWEEN 쓰려면은AND sal BETWEEN 1300 AND 2500)으로 할 수 밖에 없나요? 초과 미만은 없나요?
-
미해결실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
섹션3 join(1) 데이터 연관관계 설정 자료 요청
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.<섹션3 - join(1) 데이터 연관관계 설정> 강의에서 첨부된 강의자료가 미흡합니다.첨부된 강의자료는 category_id가 아닌 아래와 같이 category명만 있습니다.일일이 매핑해서 치기엔 시간이 너무 많이 걸려 비효율적입니다.강의영상에서 나온 강사님이 가지고 계신 category_id 컬럼이 같이 포함된 엑셀 파일로 자료 첨부 부탁드립니다.
-
해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
4번 문제
SELECT Person.firstname, Person.lastname, Address.city, Address.stateJOIN 후 특정 컬럼을 select할 때, 해당 테이블을 앞에 붙여주지 않아도 상관없을까요?