묻고 답해요
143만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨초보자를 위한 BigQuery(SQL) 입문
JOIN 5번 문제 질문 있습니다!
안녕하세요, 카일님! 수업 잘 듣고 있습니다!문제 해설 보기 전 혼자 풀었을 때, 저는 아래와 같이 쿼리를 작성했어요. 서브쿼리 안에 필요한 컬럼만 넣고 보면서 쓰는 게 편하더라고요. 제 쿼리로 쓰면 데이터를 더 많이 처리하게 되는 건지 궁금해서 질문합니다!
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
3-7. 리텐션 쿼리 작성해보기(Weekly, Montly)
Weekly 리텐션 분석#Weekly 리텐션 with base as ( select distinct 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" ), retain_base as ( select user_pseudo_id, event_week, first_week, date_diff(event_week, first_week, week) as diff_of_week from ( select distinct user_pseudo_id, date_trunc(event_date, week(monday)) as event_week, date_trunc(min(event_date) over(partition by user_pseudo_id),week(monday)) as first_week, -- 유저의 첫 접속 주차 from base ) ) select diff_of_week, user_cnt, first_value(user_cnt) over(order by diff_of_week) as first_user_cnt from ( select diff_of_week, count(distinct user_pseudo_id) as user_cnt from retain_base group by diff_of_week ) order by diff_of_week Montly 리텐션 분석#Montly 리텐션 with base as ( select distinct 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" ), retain_base as ( select user_pseudo_id, event_month, first_month, date_diff(event_month, first_month, month) as diff_of_month from ( select distinct user_pseudo_id, date_trunc(event_date, month) as event_month, date_trunc(min(event_date) over(partition by user_pseudo_id),month) as first_month, -- 유저의 첫 접속 주차 from base ) ), month_retain as ( select diff_of_month, user_cnt, first_value(user_cnt) over(order by diff_of_month) as first_user_cnt from ( select diff_of_month, count(distinct user_pseudo_id) as user_cnt from retain_base group by diff_of_month ) ) select diff_of_month, user_cnt, first_user_cnt, round(safe_divide(user_cnt, first_user_cnt),3) as retention_rate from month_retain order by diff_of_month 위클리랑 먼슬리 리텐션 쿼리 작성했습니다~
-
미해결8시간 완성 SQLD(2과목)
SQL Server 연결 시 오류가 발생해요.
MacOS 사용 중이고 SQL Server 연결 단계에 있습니다.정보를 모두 입력하고 Test Connection를 진행하면 아래와 같은 오류가 발생합니다.Login failed for user 'sa'. ClientConnectionId:84cea481-fc20-4d02-bc91-0957b3d6bde8해결 방법이 있을까요?
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
FRAME 연습 마지막 AVG 문제 소수점에 대하여 여쭤볼게 있습니다!
문제풀이를 해가던 도중마지막 ROWS BETWEEN을 이용한 5가지 AMOUNT의 AVG를 구할때 소수점이 나오는데SELECT절에 적힌 WINDOW 함수 쿼리를ROUND, FLOOR 을 사용해서 감싸줘도 작동은 하지만 소수점이 사라지지 않는데 혹시 그 이유가 뭔가요???
-
해결됨8시간 완성 SQLD(2과목)
노랭이 문제 유형 분석 노션
노랭이 문제 유형 분석 노션은제공받을 수 없는건가요?만약 제공받을 수 있다면 권한 신청은 어떻게 해야할까요?
-
미해결[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
예제문제 추가 쿼리 질문
안녕하세요 공부하다가 쿼리에 추가해보고 싶은게 생겨서 질문드립니다!예2: 서브카테코리가 '여성신발'인 상품중 할인가격이 가장 높은 상품의 할인가격 가져오기이 문제에 정석 답변이라면 MAX(dis_price) 컬럼만 도출될텐데요! 앞에다가 해당 상품명 title을 추가해서 총 두 개의 컬럼이 나오게끔 만들어보려다가 막혀서 질문드립니다.원래는 99000짜리 하나만 나와야하는데밑에 쿼리로 하니까 여러개가 나와서요 ㅠㅠ 여러개가 나온 이유는 알거같아요 타이틀을 그룹바이해서 그 그룹별로 제일 높은 가격이 도출된 것 같은데 그건 제가 원하는 답은 아니어서요! 맥스 디스 프라이스를 가진 아이템코드의 타이틀을 어떻게 해야 효과적으로 도출할 수 있나요?SELECT title, MAX(dis_price) FROM items JOIN ranking on items.item_code = ranking.item_code WHERE sub_category = "여성신발" group by title;
-
해결됨8시간 완성 SQLD(2과목)
Table not found 에러
모든열을 선택하는 키워드* 해서 강의보고 작성하였는데 table not found라는 에럭 ㅏ뜹니다
-
미해결실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
결제 데이터 분석 (join)편에 올라온 수업 자료 실행이 안됩니다
해당파일을 실행하려고 하지만 데이터베이스도 아니고 프로젝트도 아니라고 뜨네요. 혹시 파일 실행을 제가 잘못하고 있는걸까요?
-
해결됨SQL 코딩테스트를 위한 첫 걸음
sql 코딩 테스트에서 index 생성 가능 여부
안녕하세요, 강의 감사합니다. leetcode 나 다른 코딩 테스트 플랫폼에서 응답시간을 짧게 하기 위해 create index 를 사용하는걸 지원하나요? 현재 leetcode 에서 create index 쪽이 계속 syntax error 가 나길래 혹시 막아둔건지 궁금합니다.
-
해결됨장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
주차별 데이터에서 전 주 데이터 가져오기
안녕하세요, 질문드립니다! week. date. 값31 2024-08-02 A31 2024-08-03 A32 2024-08-07 B32 2024-08-08 C 위와 같이 주차별로 쌓여있는 테이블에서 현재 주차가 32주차라고 가정하면32주차의 값을 가져오는게 아니라 저번주 차의 값을 가져오고싶습니다. 원래 대로라면 32주차 (B 값 1개) 가 분모가 되겠지만31주차 (A 값 2개) 로 가져오고 싶습니다ㅠ 방법이 있을까요
-
미해결8시간 완성 SQLD(2과목)
mac m1 DBeaver db Test connection에 실패합니다 (에러코드 ORA-12541)
안녕하세요, 저는 맥 m1 유저입니다. 위와 같은 부분에서 Test connection시 계속 오류가 발생합니다. 오류 내용은 아래와 같습니다. 도커 생성도 정상적으로 되었고, Database 이름도 xe로 변경했는데 무엇이 문제인지 모르겠습니다. ㅠㅠ혹시 해결 방법을 아시나요?
-
해결됨8시간 완성 SQLD(2과목)
아
강사님이 도움 주셔서 잘 해결했습니다
-
미해결8시간 완성 SQLD(2과목)
코드 에러 질문 드립니다
Table not found라고 뜹니다 혹시 어떻게 해야 되는지 궁금합니다
-
해결됨BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)
디스코드 접속 관련
질문을 남겨주실 때 아래 부분을 같이 남겨주시면 더 빠르게 상황을 파악하고 답변드릴 수 있어요 🙂어떤 강의를 들으면서 발생했나요? BigQuery 활용편어떤 문제가 생겼나요? 디스코드 접속 불가어떤 시도를 해보셨나요? 강의 중 제공되는 링크로 디스코드 접속시 무한 로딩 발생어떤 쿼리를 사용했나요? - 환경이 어떻게 되나요?(윈도우, 맥 중 택1, 크롬 같은 웹브라우저 환경) 윈도우
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문
안녕하세요, 좋은 강의 감사합니다. 제공해 주신 쿼리에 대해 질문이 있는데요,제 생각에는 아래 쿼리가 특정 부서에서 최대 연봉을 가진 사용자를 조회하는게 아닌,전체 부서에서 최대 연봉이 x 라고 하면,세 부서에서 그 값이 있으면 출력하는 문인것 같은데,제가 어느 부분에서 헷갈린 건지 알려주시면 감사하겠습니다.SELECT * FROM users WHERE salary = (SELECT MAX(salary) FROM users) AND department IN ('Sales', 'Marketing', 'IT'); SELECT MAX(salary) FROM users 는 users 테이블의 최대 salary 를 가져오는것이고,괄호 밖의 department In (...) 은 부서 세개,그리고 salary = (SELECT MAX ...) 와 함께 저 salary 에 해당 하는 users 가져오는 것이 아닌가요? 제가 sql 초보라 양해 해주시면 감사하겠습니다 ...
-
해결됨실무에 바로 쓰자! 이커머스 데이터로 배우는 실전 SQL 분석
할인 데이터 확인 편에서 에러가 자꾸 납니다.
이렇게 했는데도 불구하고 계속 에러가 뜹니다 선생님
-
해결됨비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
created_at 에 index 거는것과 지속적인 데이터 증가
안녕하세요, 좋은 강의 감사합니다. created_at 에 index 를 걸어서 order by 와 같은 문제를 해결하는 것을 보았는데요, 데이터가 지속적으로 증가하고 밀리초 단위로 들어오는 created_at 이 있다면, 이것들을 모두 다 인덱스로 걸어도 괜찮은건가요?? 데이터가 계속 커지면 어떻게 처리하나요??
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
WHERE A OR B 에서 인덱스 걸기
안녕하세요, 좋은 강의 제공해 주셔서 감사합니다.[실습] WHERE문에 인덱스를 걸기 vs ORDER BY문에 인덱스를 걸기 강의 에서 질문이 있습니다. 만일 created_at 과 department 가 AND 가 아닌 OR 조건이 주어지면, 데이터 엑세스가 더 많은것에 인덱스를 거는것이 좋을까요?? SELECT * FROM users WHERE created_at >= DATE_SUB(NOW(), INTERVAL 3 DAY) OR department = 'Sales' -- AND 대신 OR ORDER BY salary LIMIT 100;
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
질문이있습니다.
제가 선생님 강의를보고테이블에 천만개의 데이터를 넣고 인덱스를 테스트하고있었는데요, 2가지 질문이 생겼습니다. 질문다음과 같이 익스플레인 에널라이즈를 하면 소요시간이 약 704ms 으로 나옵니다. 그런데 익스플레인 에널라이즈만 제거하고 다시 셀렉트를 하면 소요시간이 1.494로 증가하는데 단순 조회 쿼리와 익스플레인 에널라이즈 쿼리가 서로 다르게 동작해서 그런건가요? 분석때문에 에널라이즈쪽이 더 오래걸릴까 싶었는데 오히려 반대라서 왜 이런현상이 발생하는지 궁금합니다.-> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1) 질문제가 다음과 같은 쿼리에 인덱스를 걸며 테스트해보니복합인덱스 ( userId,seatId or reverse ) 는 전혀 인덱스를 활용하지않고 단일 인덱스를 각각 지정했을 경우에만 아래와같이 인덱스를 병합해서 사용하더라구요. 이렇게 속도를 절반으로 떨어뜨렸는데 아무래도 데이터가 천만개라 그런가 여전히 1초 이상의 시간이 소요되어서 선생님이 보셨을때 여기서 더 개선해볼 방법이 있는지 궁금합니다.where쪽을 건드려 보자니 둘중 하나라도 충족되면 가져와야하는 상황이라면 or 말고 다른건 떠오르질않았습니다.(에널라이즈는 시간이 1초 미만으로 나오지만 실제로 쿼리 돌려보면 소요시간 1.4초 이상으로 찍힙니다. ) CREATE INDEX idx_user ON reservation_entity(userId); CREATE INDEX idx_seat ON reservation_entity(seatId); SELECT `reservation`.`createdAt` AS `reservation_createdAt`, `reservation`.`updatedAt` AS `reservation_updatedAt`, `reservation`.`deletedAt` AS `reservation_deletedAt`, `reservation`.`id` AS `reservation_id`, `reservation`.`userId` AS `reservation_userId`, `reservation`.`concertId` AS `reservation_concertId`, `reservation`.`seatId` AS `reservation_seatId`, `reservation`.`status` AS `reservation_status`, `reservation`.`price` AS `reservation_price`, `reservation`.`concertName` AS `reservation_concertName`, `reservation`.`seatNumber` AS `reservation_seatNumber`, `reservation`.`openAt` AS `reservation_openAt`, `reservation`.`closeAt` AS `reservation_closeAt` FROM `reservation_entity` `reservation` WHERE `reservation`.`userId` = 389788 OR `reservation`.`seatId` = 50; -> Filter: ((reservation.userId = 389788) or (reservation.seatId = 50)) (cost=11192 rows=10272) (actual time=2.33..678 rows=10271 loops=1) -> Deduplicate rows sorted by row ID (cost=11192 rows=10272) (actual time=2.3..676 rows=10271 loops=1) -> Index range scan on reservation using idx_user over (userId = 389788) (cost=1.11 rows=1) (actual time=0.115..0.115 rows=0 loops=1) -> Index range scan on reservation using idx_seat over (seatId = 50) (cost=1038 rows=10271) (actual time=0.0497..2.77 rows=10271 loops=1)
-
미해결[2024 리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
강의 화면 출력이 되지 않는 현상
강의 화면이 제가 들었던 기록들을 제외하고는 음성만 들리고 영상이 보이지가 않습니다. 혹시 해결방안 있을까요?