묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실무 활용 SQL 데이터 분석: 효율적인 데이터 처리와 인사이트 도출
2-2. 실습 2A 6, 7번 문제
Ex 7. # fact_orders 테이블에서 product id 순으로 다음 10개의 제품을 표시하세요 select product_id, prod_cat_name_eng from ecommerce.dim_products order by product_id limit 10 offset 10; 왜 문제는 'fact_orders 테이블에서'인데 from ecommerce.dim_products인거죠?
-
미해결FastAPI 완벽 가이드
머신러닝 백엔드 강좌 언제나오나요?
머신러닝 강좌는 언제 오픈하나요? 빨리듣고 싶습니다. ㅎㅎ 일 때문에 빨리 듣고싶은데 프리뷰 필요하시면 연락부탁드립니다.
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
artist 테이블을 생성 시 "권한 불충분" 오류 관련 문의
artist 테이블을 생성하기 위해서 공유해 주신 스크립트를 실행하면 "SQL Error [1031] [42000]: ORA-01031: 권한이 불충분합니다"라는 에러가 발생합니다. 해결 방안을 문의 드립니다.
-
해결됨[2026] SQLD 문제가 어려운 당신을 위한 노랭이 176 문제 풀이
DATA_FORMAT문제
DATE_FORMAT(날짜, 형식)문자열을 지정된 날짜 형식으로 포맷팅하는 함수입니다.이 문제의 경우 DATE_FORMAT 함수는 MySQL에서 지원되며, 반환 값은 문자열이므로 조건이 맞지 않습니다.예: DATE_FORMAT('2022-11-02', '%Y-%m-%d') → '2022-11-02' (문자열) 학습노트에 DATA_FOMAT함수 문자열 조건이 맞지않는다고 써져있는데 3번문항이 '2022-11-02' 이렇게 문자열로 나와야한다는건가요..?그럼3번문항도 ''로 감싸진 문자열이아니니틀렸다는건가요 ?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-9. [자습] PIVOT 테이블 생성하기
WITH base as ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, MAX(IF(params.key='firebase_screen', params.value.string_value, NULL)) as firebase_screen, -- MAX(IF(params.key='food_id', params.value.int_value, NULL)) as food_id, MAX(IF(params.key='session_id', params.value.string_value, NULL)) as session_id, FROM advanced.app_logs CROSS JOIN UNNEST(event_params) as params WHERE -- event_date = "2022-08-01" # 적은 데이터로 쿼리를 작성하기 위해 만든 조건 event_date BETWEEN "2022-08-01" AND "2022-08-18" GROUP BY ALL ), fileter_event_and_concat_event_and_screen AS( -- event_name + screen 하면서(필요한 이벤트만 WHERE 조건에 걸어서 사용) SELECT * EXCEPT(event_name, firebase_screen, event_timestamp), CONCAT(event_name, "-", firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp), "Asia/Seoul") AS event_datetime FROM base WHERE event_name IN("screen_view", "click_payment") ) -- step_number + cnt 만들기 -- step_number : CASE WHEN을 사용해 숫자 지정 , pivot_base as ( SELECT event_date, # 일자별로 퍼널별 유저 수 쿼리, 일자별로 처리하기 위해 event_date 추가 event_name_with_screen, CASE WHEN event_name_with_screen = 'screen_view-welcome' THEN 1 WHEN event_name_with_screen = 'screen_view-home' THEN 2 WHEN event_name_with_screen = 'screen_view-food_category' THEN 3 WHEN event_name_with_screen = 'screen_view-restaurant' THEN 4 WHEN event_name_with_screen = 'screen_view-cart' THEN 5 WHEN event_name_with_screen = 'click_payment-cart' THEN 6 ELSE NULL END AS step_number, COUNT(DISTINCT user_pseudo_id) as cnt FROM fileter_event_and_concat_event_and_screen GROUP BY ALL HAVING step_number IS NOT NULL ORDER BY event_date -- WHERE -- user_pseudo_id = "2173465695.8694960923" -- user_pseudo_id = "2173465695.8694960923" :event_name_with_screen = screen_view-welcome의 user_id는 NULL -> home에서 로그인 -- food_detal, search 등 event_name_with_scree의 여러 요소들을 확인해보기 ) # [자습] 위 테이블을 screen_view 타입별로 피벗 테이블 만들기 쿼리 (위 테이블을 with 절로 만들고 아래 쿼리 실행) SELECT event_date, MAX(IF(event_name_with_screen="screen_view-welcome", cnt, NULL)) as `scren_view-welcome`, MAX(IF(event_name_with_screen="screen_view-home", cnt, NULL)) as `scren_view-home`, MAX(IF(event_name_with_screen="screen_view-food_category", cnt, NULL)) as `scren_view-category`, MAX(IF(event_name_with_screen="screen_view-restaurant", cnt, NULL)) as `scren_view-restaurant` FROM pivot_base GROUP BY event_date ORDER BY event_date과제 올립니다 감사합니다
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
DBeaver를 연결했는데 도커를 또 연결해야해요?
DBeaver를 연결했는데 도커를 또 연결해야해요?
-
해결됨[2026] SQLD 문제가 어려운 당신을 위한 노랭이 176 문제 풀이
노랑이 39P 15번문제
FROM (SELECT (LENGTH(C1) -LENGTH(REPLACE(C1,CAR(10))+1 CCFROM TAB1 이부분에서 LENGTH(REPLACE(C1,CAR(10))+1+1이라는게 C1의 ROWNUM1이 >ROWNUM2를 가르키나요? 저는 C1 ROW1을 공백제거해서 2C2ROW2를 공백제거해서 3 해서2+3=5 여기에 +1일해서 6이 정답인줄알았는데+1이 정확히 뭘의미하는지잘모르겠어요ㅜ
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
3-7. 리텐션 쿼리 작성 및 질문(Weekly, Montly)
안녕하세요,강의 수강하면서 Weekly, Monthly Retention 쿼리를 작성해보았습니다!그리고 질문이 하나 있는데, 첨부해드린 코드는 현재 첨부해드린 사진처럼 오류가 발생합니다. 그런데 Weekly Retention 쿼리를 전부 주석처리하면 Monthly Retention 쿼리는 정상 작동합니다. 반대로 Monthly Retention 쿼리를 주석처리하면 Weekly Retention 쿼리는 정상 작동합니다.이 현상의 원리에 대한 감이 잡히지 않아서 질문드립니다!그 외에 쿼리 관련해서 고칠 점이 있다면 편하게 말씀해주시면 감사하겠습니다!WITH base AS ( SELECT user_id, user_pseudo_id, event_name, DATE(DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul')) AS event_date, DATETIME(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_datetime FROM advanced.app_logs WHERE event_date BETWEEN "2022-08-01" AND "2022-11-03" ), first_week_and_diff AS ( SELECT *, -- DATE_DIFF(event_date, first_date, DAY) diff_of_day DATE_DIFF(event_week, first_week, WEEK) diff_of_week FROM ( SELECT DISTINCT -- 일자별로 중복 제거 user_pseudo_id, -- DATE_TRUNC DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), WEEK(MONDAY)) AS first_week, MIN(event_date) OVER (PARTITION BY user_pseudo_id) AS first_date, DATE_TRUNC(event_date, WEEK(MONDAY)) AS event_week, event_date FROM base ) ), first_month_and_diff AS ( SELECT *, -- DATE_DIFF(event_date, first_date, DAY) diff_of_day DATE_DIFF(event_month, first_month, MONTH) AS diff_of_month FROM ( SELECT DISTINCT user_pseudo_id, --DATE_TRUNC DATE_TRUNC(MIN(event_date) OVER (PARTITION BY user_pseudo_id), MONTH) AS first_month, DATE_TRUNC(event_date, MONTH) AS event_month, MIN(event_date) OVER (PARTITION BY user_pseudo_id) AS first_date, event_date FROM base ) ) -- Weekly Retention SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_cnt), 3) AS week_retention_rate FROM ( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY diff_of_week) AS first_cnt FROM ( SELECT diff_of_week, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_week_and_diff GROUP BY diff_of_week ) ) ORDER BY diff_of_week; -- 추가. Monthly Retention SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_cnt), 3) AS month_retention_rate FROM ( SELECT *, FIRST_VALUE(user_cnt) OVER (ORDER BY diff_of_month) AS first_cnt FROM ( SELECT diff_of_month, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM first_month_and_diff GROUP BY diff_of_month ) ) ORDER BY diff_of_month;
-
해결됨오라클 SQL 데이터베이스
SQL Command Line 실행법
안녕하세요. 강의를 듣고 Docker로 오라클 DB를 실행하며 실습하고 있습니다. DELETE를 이용한 데이터 삭제 영상에서 RETURNING절 설명에 커맨드 라인으로 명령을 입력하라고 하셨는데, Docker로 실행한 경우 커맨드 라인을 여는 방법을 모르겠어서 질문드립니다.
-
미해결FastAPI 완벽 가이드
db connect
안녕하세요! 강사님!처음으로 fastAPI를 접하는데 강사님 수업을 통해 배움을 얻어 가게되어 우선 감사 말씀드립니다. DB Connect 세팅 시create_engine 함수를 이용하여 엔진 객체만 생성하여 DB에 연결을 하는데 다른 참고 자료들과 비교하면 모델 클래스 생성은 ORM을 사용하지 않으니 생성을 할필요가 없을테고, sessionmaker 함수를 통한 세션 클래스는 따로 생성하지 않더군요.혹시 sessionmake를 통해 생성된 세션 클래스의 역할과 지금 강의에서는 사용하지 않은 이유를 알 수 있을까요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
28번 문제 답에대해서 질문드립니다.
강의를 보기전에 혼자 쿼리를 작성하고 강의를 보았는데 강사님의 쿼리와 다른 방식으로 작성을 하여서 질문 합니다!.WITH 절을 사용하여 다음과 같이 쿼리를 작성하였는데 이런방식으로도 현업?이나 주로 작성하는지 궁굼합니다. 제가 작성한 쿼리는 다음과 같습니다!WITH rented_films AS ( SELECT DISTINCT I.film_id FROM rental R JOIN inventory I ON I.inventory_id = R.inventory_id)SELECT F.titleFROM film FLEFT JOIN rented_films RF ON RF.film_id = F.film_idWHERE RF.film_id IS NULL;
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
섹션13-집계함수 SUM, AVG, MIN, AVG, COUNT 강의
해당 강의의 1:39 초에 ORDER BY sal ROWS UNBOUNDED PRECEDING을 추가적으로 넣어주셨는데 avg의 결과값이 이해가 안돼서 질문드리게 되었습니다. avg를 계산할 때도 rows unbounded preceding이 적용되었으니 [CLERK] 파티션에서는- SMITH : 800- ADAMS : (800+950) /2 = 875 이런식으로 계산이 되어야 하는건 아닌지 궁금합니다.하단 테이블에 실제 계산된 값을 보니, [CLERK] 파티션의 AVG 값은 (800 + 950 + 1100+ 1300) / 4 = 1,037.5 값을 출력한 것으로 보이는데 이유가 궁금합니다!
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
mac에서 ORA-12528
ORA-12528: TNS:리스너: 적절한 모든 인스턴스가 새 접속을 차단하고 있습니다. 현재 맥으로 수업중인데해당 오류가 발생하고 있습니다. ㅠㅠ 오라클 테스트 단계에서 못넘어가고 있어요
-
미해결실습으로 손에 잡히는 SQLD의 정석(2과목)
mac에서 ORA-12541 오류 발생
DBeaver에서 DBMS에 접속하고 테스트 쿼리해보기 항목에서 오라클에 연결중에 ORA-12541이라는 오류가 발생하면서 데이터베이스에 접속할 수 없습니다. %s에 리스너가 없습니다. 이러한 설명이 나와있습니다. 어떻게 해결하면 될까요?
-
해결됨FastAPI 완벽 가이드
pydantic
안녕하세요. 강의에서 사용한 pydantic은 V2인게 맞는 걸까요??
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-9 PIVOT문제 풀기
안녕하세요 카일스쿨님!1-9 PIVOT문제를 풀어봤습니다.먼저 PIVOT전에 제방식대로 푼코드를 드리겠습니다. 제가 WITH문을 자주 쓰지않고 그냥 한코드에 다쓰는 습관이 있어서 이런식으로 코드를 짜면 안좋은점이 있는지 피드백받고싶습니다. 또한 PIVOT문제를 풀긴 했는데 맞는 답인지 피드백받고싶습니다.-- PIVOT하기전에 제가 푼 것-- 내가 쓴 답 -- SELECT -- event_date, -- concat(event_name,'-', param.value.string_value) AS event_name_with_screen, -- CASE -- WHEN (event_name='screen_view' AND param.value.string_value='welcome') THEN 1 -- WHEN (event_name='screen_view' AND param.value.string_value='home') THEN 2 -- WHEN (event_name='screen_view' AND param.value.string_value='food_category') THEN 3 -- WHEN (event_name='screen_view' AND param.value.string_value='restaurant') THEN 4 -- WHEN (event_name='screen_view' AND param.value.string_value='cart') THEN 5 -- WHEN (event_name = 'click_payment' AND param.value.string_value='home') THEN 6 -- ELSE 0 -- END AS step_number, -- COUNT(DISTINCT user_id) AS cnt -- FROM `expanded-idiom-446706-d4.advanced.app_logs` -- CROSS JOIN UNNEST(event_params) AS param -- WHERE -- (event_date BETWEEN "2022-08-01"AND '2022-08-18') AND key='firebase_screen' -- GROUP BY event_date,event_name,param.value.string_value,step_number -- HAVING step_number !=0 -- ORDER BY step_number ,event_date-- PIVOT문제 푼것 WITH base AS ( SELECT event_date, event_timestamp, event_name, user_id, user_pseudo_id, platform, MAX(IF(event_param.key = 'firebase_screen',event_param.value.string_value,null)) AS firebase_screen, MAX(IF(event_param.key = 'food_id',event_param.value.int_value,null)) AS food_id, MAX(IF(event_param.key = 'session_id',event_param.value.string_value,null)) AS session_id FROM advanced.app_logs CROSS JOIN UNNEST(event_params) AS event_param WHERE -- event_date = '2022-08-01' # 적은 데이터로 쿼리를 작성하기 위해 만들어둔 조건 event_date BETWEEN '2022-08-01' AND '2022-08-18' GROUP BY ALL ) , fliter_event_and_concat_evnet_and_screen AS( -- screen과 event_name을 합치자(필요한 이벤트만 where 조건에걸어서 사용) SELECT * EXCEPT(event_name,firebase_screen,event_timestamp), CONCAT(event_name,'-',firebase_screen) AS event_name_with_screen, DATETIME(TIMESTAMP_MICROS(event_timestamp),'Asia/Seoul')AS event_datetime FROM base WHERE event_name IN ('screen_view','click_payment') ) SELECT event_date, SUM(IF(event_name_with_screen='screen_view-welcome'),cnt,0) AS `screen_view-welcome`, SUM(IF(event_name_with_screen='screen_view-home'),cnt,0) AS `screen_view-home`, SUM(IF(event_name_with_screen=' screen_view-food_category'),cnt,0) AS `screen_view-food_category`, SUM(IF(event_name_with_screen='screen_view-restaurant'),cnt,0) AS `screen_view-restaurant`, SUM(IF(event_name_with_screen='screen_view-cart'),cnt,0) AS `screen_view-cart`, SUM(IF(event_name_with_screen='click_payment-cart'),cnt,0) AS `click_payment-cart` FROM fliter_event_and_concat_evnet_and_screen GROUP BY ALL ORDER BY event_date
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
데이터 삭제 질문
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 즐겁게 강의를 수강 중인 수강생입니다. sql 데이터 수정 삭제 문법 이해하기 - 실습 중이름이 김철수인 학생만 삭제하려고 넣으니15:25:41 DELETE FROM students WHERE name = '김철수' Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec 라고 오류가 떠 gpt에 질문하여 해결하였습니다. 다만 gpt는 안전모드를 해제(일시적 또는 영구적)하거나 기본키(id) 또는 인덱스가 있는 컬럼을 사용하여 삭제하라고 추천합니다. 질문은, 보통 sql 이용 시 안전모드를 해제하고 사용하면 되는 걸까요?아니라면 id가 아닌 컬럼을 선택하여 삭제하는 경우가 거의 없어서 일시적으로 안전모드 해제하고 삭제하는 것이 일반적인 경우일까요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 고급 SQL
고급반 cheetsheet
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 수업자료 버튼이 막혀있는 것 같아요고급반 cheetsheet 신청하는 이메일 주소 알려주세요~
-
미해결[웹 개발 풀스택 코스] 넷플릭스와 당근마켓 분석을 통해서 배우는 데이터베이스 기초
SQL 설치시 관련 옵션이 없습니다
중간 과정에서 문제 생긴건지 아니면 설치 옵션이 바뀐것지 모르겠지만 PDF 파일에 나온 Windows 환경에서 설치하는 과정에서DeveloperDefault 옵션이 보이지 않습니다.그래서 일단 Full 옵션을 선택해서 다운로드 했는데 상관없을까요?( 아래는 PDF 이미지 입니다. 저는 맨 윗줄 옵션이 아예 누락되서 나오네요. )
-
해결됨실전 jOOQ! Type Safe SQL with Java
Sakila DB 도커 컴포즈 구성 시 팁
MySQL의 기본 데이터 저장 경로는 /var/lib/mysql이므로, 직접 만든 볼륨에 /data 경로가 아닌 /var/lib/mysql을 지정해주셔야 합니다.도커 컴포즈 파일 내 Volumes-top-level-elements 설정 시, sakila_volume: 이하에 external: true를 지정하지 않으면, {project_name}_db-data 인 이름의 볼륨을 찾고 없으면 해당 볼륨을 생성합니다.(예: sakila-mysql_sakila_volume) 따라서 external: true를 지정하거나, name: sakila_volume 을 지정해야합니다.see → https://docs.docker.com/reference/compose-file/volumes/