묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
[과제] 퍼널 쿼리(피벗테이블 적용) 작성
# base 쿼리 작성 전 생각 흐름 ---------------------------------------------------- ## 1. 테이블 내 데이터 구조 파악 -- select -- * -- from advanced.app_logs -- where -- event_date = '2022-08-01' -- 목적에 맞는 쿼리를 기존 데이터로 구현할 수 있는지 여부 확인 -- 연습문제 결과물 컬럼인 'event_name_with_screen', 'step_number', 'cnt'는 기존 컬럼에 없음. -- 기존 컬럼에 없기 때문에 해당 컬럼을 어떻게 구현해내야 할 지 생각해보기 ## 2. event_name_with_screen 컬럼 구현 순서 및 방법 -- event_name_with_screen는 다음과 같은 value를 가짐 -- 1. screen_view-welcome -- 2. screen_view-home -- 3. screen_view-food_vategory -- 4. screen_view-restaurant -- 5. screen_view-cart -- 6. click_payment-cart -- 위 6가지 value가 기존 컬럼에 있는지 확인해보기 -- 있는 경우 -- 기존 컬럼 활용 -- 없는 경우 -- concat 등으로 새롭게 구현 -- 연습문제에서는 event_name과 event_params.key에 있는 value를 concat 했음. -- event_params.key는 데이터타입이 struct이기 때문에 unnest 필요. -- select -- event_name, -- unnest_event_params -- from advanced.app_logs -- cross join unnest(event_params) as unnest_event_params -- where -- event_date = '2022-08-01' -- unnest 결과물에 피봇테이블 적용하기 -- 피봇테이블로 만들면 직관적으로 event_name과 concat 하기가 용이해서. -- select -- event_name, -- event_date, -- event_timestamp, -- user_pseudo_id, -- max(if(unnest_event_params.key = 'firebase_screen', unnest_event_params.value.string_value, null)) as firebase_screen, -- max(if(unnest_event_params.key = 'food_id', unnest_event_params.value.int_value, null)) as food_id, -- max(if(unnest_event_params.key = 'session_id', unnest_event_params.value.string_value, null)) as session_id -- from advanced.app_logs -- cross join unnest(event_params) as unnest_event_params -- where event_date between '2022-08-01' and '2022-08-18' -- group by 1, 2, 3, 4 ---------------------------------------------------- with base as ( select event_name, event_date, event_timestamp, user_pseudo_id, max(if(unnest_event_params.key = 'firebase_screen', unnest_event_params.value.string_value, null)) as firebase_screen, max(if(unnest_event_params.key = 'food_id', unnest_event_params.value.int_value, null)) as food_id, max(if(unnest_event_params.key = 'session_id', unnest_event_params.value.string_value, null)) as session_id from advanced.app_logs cross join unnest(event_params) as unnest_event_params where event_date between '2022-08-01' and '2022-08-18' group by 1, 2, 3, 4 ), base2 as ( select *, concat(event_name, '-', firebase_screen) as event_name_with_screen from base ) ## 일자별 퍼널 쿼리 , base3 as (select event_date, event_name_with_screen, # 2개 이상 조건을 한 개 컬럼에 적용해야 하기 때문에 case when 사용 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 컬럼명) 사용 count(distinct user_pseudo_id) as cnt from base2 group by all # null 값 제외하기 위해서 그룹에 필터링 거는 having 사용 having step_number is not null # 1일부터 보고 싶기 때문에 오름차순(asc) 적용 order by 1 asc) ## 일자별 쿼리 (피벗테이블 적용) select event_date, max(if(event_name_with_screen = 'screen_view-welcome', cnt, 0)) as screen_view_welcome, max(if(event_name_with_screen = 'screen_view-home', cnt, 0)) as screen_view_home, max(if(event_name_with_screen = 'screen_view-food_category', cnt, 0)) as screen_view_food_category, max(if(event_name_with_screen = 'screen_view-restaurant', cnt, 0)) as screen_view_restaurant, from base3 group by all order by 1 asc
-
해결됨FastAPI 완벽 가이드
WSGI, ASGI 와 미들웨어 간의 관계
안녕하세요! 강의 잘 보고 있습니다. 강의를 보는 중에 헷갈리는 개념이 있어서 질문드려요!올려주신 강의 중 미들웨어 챕터 부분을 보고 있어요. 그런데 문득 미들웨어와 uvicorn, gunicorn, hypercorn 과 같은 WSGI, ASGI 서버 간의 관계에 대해서 궁금증이 들었습니다. 보통 언어에 상관없이 웹 통신을 한다라고 하면 아래와 같은 구조로 통신한다고 볼 수 있잖아요?(DB가 있다고 가정)"""Client(Web Browser) ---> Web Server ---> Web Application Server ---> DB"""그리고 파이썬에서는 uvicorn, gunicorn 과 같은 WSGI, ASGI 서버들이 Web Server 역할을, Flask, FastAPI 와 같은 프레임워크 서버들이 Web Application Server의 역할을 한다고 알고 있습니다. 그리고 저 Web Server 요소가 미들웨어라고 정의한다고 알고 있었는데요! 그런데 FastAPI 공식문서 상에서는 미들웨어라는 것을 소개할 때, "모든 요청 또는 응답에 대해서 사전 또는 사후 처리 로직을 추가할 때 사용하는 것" 이라고 소개를 하면서 문득 "그러면 여기서 이야기하는 미들웨어랑 uvicorn, gunicorn 과는 어떤 차이점이 있는거지?" 하면서 헷갈리더라구요. 자바에서는 미들웨어라는 개념이 JVM 위에서 동작하면서 DB 연결, TCP/IP 연결 등과 같이 다른 소프트웨어(ex.애플리케이션)가 잘 동작하도록 지원해주는 소프트웨어라고 알고 있는데요! 만약 이러한 관점에서 본다면 uvicorn, gunicorn 과 같은 WSGI 또는 ASGI 서버들도 미들웨어라고 볼 수는 없는 걸까요? ChatGPT 한테 물어보았을 때는 엄연히 다른 개념이라고 하는데.. 정확히 차이점을 잘 모르겠어서요. 답변 해주시면 감사하겠습니다! (참고로 저는 파이썬으로만 오랫동안 개발해와서 자바나 다른 언어 관련해서는 잘 모를 수도 있어서 다른 언어에 대한 비유로 답변 주시면 제가 잘 이해를 못할 수도 있습니다!)
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-6. 데이터 PIVOT 연습문제
빅쿼리 날짜 타입 입력할때 큰따옴표, 작은 따옴표 둘 중에 아무거나 입력해도 상관없을까요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-4 ARRY ,STRUCT 연습문제
어느 부분에서 오류 났는지 모르겠어요!
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
해커랭크 Employee Salaries 문제 질문
다음과 같이 쓴게 정답 인데요 SELECT nameFROM EmployeeWHERE salary > 2000AND months < 10ORDER BY employee_id ASC여기서 왜 WHERE salary > 2000, months < 10 처럼 콤마로 이어질 순 없는건가요? WHERE 절에서 두가지 조건이 붙으면 무조건 AND나 OR 로 연결해야하는건가요?- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결FastAPI 완벽 가이드
동영상 재생 오류
FastAPI Response > JSONResponse 다루기 관련한 동영상이 검은창으로 음성만 재생됩니다. 확인 부탁 드립니다. ( 해당 강의 이후에 다 그렇게 나옵니다. - mac m1, 크롬/사파리 브라우져 사용시) 저번주에는 앱에서 저장 및 재생 기능이 안되더니 이번주에는 pc에서 안되네요 ㅜㅜ (다른 동영상은 재생이 잘 되는데 여기 동영상만 그런것 같기도 해요)
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
해커랭크 문제풀이 1 에서
첫번째 문제 Employee name에서 왜 select 하고 처음에 *하고 마지막에 다시 SELECT name으로 바꾸는건가요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
SELECT는 뭘 불러오는거고 FROM 은 뭘불러오는건가요
우선 첫시간에 배울 때 가로(행row) 는 데이터 1개 세로(Column)는 데이터의 특성( ex. Customers, Product..) 라고 하셨는데 그렇다면 '테이블' 은 각각 세로줄 (column) 하나씩을 말하는건가요? 그리고 SELECT 에 거의 항상 *가 들어갔었는데 SELECT라는 개념이 FROM 보다 더 큰 개념인거죠? 그러니까 모든 Column들을 선택하라는거죠? 이문제에서는 왜 Station 보다 작은 범위안에 있는 City 를 SELECT 에 넣고 FROM에 STATION을 넣는건가요? SELECT의 범위 그리고 뭘 불러오는거며 FROM 의 범위는 어딘지 헷갈립니다... - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
1-2. 데이터 불러오기 질문
app_logs_temp 테이블 생성할 때 바로 event_date로 파티션 설정할 수 없을까요? app_logs 테이블 생성할 때 쿼리 이해가 잘 되지 않아요, 설정에서 테이블 만들기와의 차이점이 무엇인가요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
해커랭크 문제풀이 중
Weather Observation station 6 에서 제가 아직 AND 와 OR 의 차이를 정확히 모르겠어서 질문합니다. 정답인 코드가 SELECT CITYFROM STATIONWHERE CityLIKE 'a%' OR city LIKE 'e%'OR city LIKE 'i%'OR city LIKE 'o%'OR city LIKE 'u%';이것인데, 왜 SELECT CITYFROM STATIONWHERE CityLIKE 'a%' AND 'e%' AND 'i% AND 'o%' AND 'u%'; 이렇게 하면 틀린건가요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[백문이불여일타] 데이터 분석을 위한 기초 SQL
Revising the Select Query 1 문제가 약간 바뀌었어요
저는 문제가 Query the NAME field for all American cities in the CITY table with populations larger than 120000. The CountryCode for America is USA. 이렇게 나오는데... 어떻게 풀면 좋을까요 저 NAME 을 ? The CITY table is described as follows:- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨(2026 최신!) 일주일만에 합격하는 정보처리기사 실기
23년 3회 쿼리문제 질문입니다!
12:43에서 나온 쿼리 문제의 답 4, 3, 1을 꼭 세로로 나열해야 되나요?
-
미해결Oracle PL/SQL 딱 이만큼.. [개념+실전]
SQL Developer 프로그램 사용 팁 질문 드립니다.
안녕하세요. 수업 영상 잘보고 있습니다.SQL Developer이 편해보여서 사용하려고 합니다.SQL Developer 사용방법 같은 경우 어떻게 익히셨을까요? (추천하시는 도서 있을까요?) 단축키ERD 만드는방법등 궁금합니다.
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 4번 관련
강사님, 수업 자료랑 강의 내용과 상이한 부분이 있는 것 같아서 여쭤봅니다.11:50 부분에는 RANGE가 디폴트라고 말씀해주셨는데, 강의 자료에는 ROWS가 디폴트라고 적혀있어서요. 어떤게 맞는 것일까요?
-
미해결다양한 사례로 익히는 SQL 데이터 분석
ADSP자격증
다양한 사례로 익히는 SQL 데이터 분석(권철민 강사님)강사님 안녕하세요저는 백앤드 개발자로 3년간 일하다가 개발보다는 쿼리짜는 것에 더 흥미가 있어서 데이터 엔지니어쪽으로 전직하고 싶어서 이 강의를 구매했습니다. 저는 평소 데이터를 분석하고 쿼리를 짜는게 재미있고 꼼꼼한 성격이어서 데이터 관련 직무가 저와 잘 맞을거라고 생각하는데요!아래 두가지 질문드립니다~! 이 강의가 데이터 분석가를 위한 강의라고 보았는데 이 직무는 SQL쿼리조작+프로그래밍 능력 두가지가 필요한 것일까요? 프로그래밍의 비중이 개발자보다는 덜 한 직업인가요..?ADSP(데이터 분석 준전문가)는 해당 직무 및 이 강의와 관련이 있는 자격증인가요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 37번 관련
37번 문제 관련 질문이 있습니다.저는 LEFT JOIN 에서 TIMESTAMPDIFF 말고 BETWEEN '2006-01-15' AND '2006-02-14' 을 활용했는데요, 두 개의 답이 다르게 나와서 어떤 것이 정확한 방법인지 헷갈려서 문의드립니다.제가 문제를 잘못 이해한 것일까요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
연습문제 28번 관련
안녕하세요. 풀이중에 궁금한 것이 있어서 질문 납깁니다.연습문제 28번에 2가지 방식의 쿼리문을 설명해주셨는데요, 결과값이 각각 43 row, 42 row로 반환이 되어 다른 것 같습니다. 이럴 경우 두가지 방식 중에 어떤 것이 더 확실한 방법일까요?
-
미해결중고급 SQL과 실전 데이터 분석 101 문제 풀이
강의 내 연습문제 유형 관련
강사님, 이전 강의들도 너무 유익하게 듣고 좀 더 심화된 학습이 필요하겠다고 생각하던 찰나에 하루 전에 중급 쿼리 강의가 업데이트되어 서둘러 결제했습니다.마침 쿼리테스트를 준비하고 있는데 핵심만 쏙쏙 뽑아주는 강사님의 코딩이 저한테 적합하다고 생각이 많이 들었거든요. 먼저 좋은 강의 제공해주셔서 감사합니다.다른게 아니고, 강의 내에 연습문제들에 관련된 질문인데요!준비해주신 연습문제가 AARRR이나 AB테스트와도 관련성이 있는지 객관적으로 판단하기가 어려워 여쭤봅니다.
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
SQL 튜닝에 대한 사례나 Best Practice 등을 모은 자료를 알려주실 수 있나요?
안녕하세요 선생님강의 잘 듣고 실무에서 배운 대로 인덱스를 좀 더 적극적으로 사용하려고 하는데, 평소에 깊은 고민하지 않다가 이제 해보려고 하니까 많이 고통스러운 시기를 지나고 있는 것 같습니다. 혹시 선생님께서 튜닝과 관련하여 도움을 받았거나, 혹은 추천할 만한 자료, 저서, 사이트 등이 있으시면 추천해주실 수 있으실까요? 좀 더 다양한 사례를 보면서 인덱스에 익숙해지고 싶습니다. 감사합니다.
-
해결됨초보자를 위한 BigQuery(SQL) 입문
4-5 시간데이터 연습문제 1~2번 질문
마지막 부분에 시간별 데이터 추출할때서브쿼리 사용하지 않고 다이렉트로 추출할 수 없나요?group by에 extract( hour from battle_datetime)은 인식을 못하는 건가요?