QCC | 7회차 코드 리뷰 & 피드백 (+마지막 qcc)
·
SQL
☑️  좋아요를 받지않은 페이지 조회[문제][문제 풀이]내 코드 SELECT DISTINCT p.page_id AS page_idFROM pages p LEFT JOIN page_likes pl ON p.page_id =pl.page_idWHERE pl.page_id IS NULLORDER BY 1; 이슈 및 해결 과정left join 후 null 값 집계 하는 문제page_id 만 출력하는 부분에서, group by 쓸지 distinct 쓸지 고민하다가 한줄 추가하기 싫어서 distinct로 해결실무에서 사용한다면 group by 가 더 적합할듯한줄 포인트pass ☑️  티커별 최고가/최저가와 해당날짜 조회하기[문제][문제 풀이]내 코드 -- 1. high /low 의 open 과 일짜 각각cte로 ..
코테준비 | WHERE 절 서브쿼리 / EXISTS / 소수점 변환 / 두 날짜의 차이 (PostgreSQL)
·
SQL
☑️ Patient Support Analysis (Part 1)[문제] EXISTS 활용[문제 풀이]내 코드-- WITH문 풀이법 WITH sub AS ( SELECT policy_holder_id FROM callers GROUP BY policy_holder_id HAVING COUNT(DISTINCT case_id)>=3)SELECT COUNT(DISTINCT policy_holder_id) AS policy_holder_countFROM sub-- WHERE저 다중커럼 서브쿼리 풀이법SELECT COUNT(DISTINCT policy_holder_id) AS policy_holder_countFROM callersWHERE policy_holder_id IN ( SELECT..
QCC | 6회차 코드 리뷰 & 피드백
·
SQL
☑️  top3 조회하기[문제][문제 풀이]내 코드 WITH dnk_t AS( SELECT *,ROW_NUMBER() OVER (PARTITION BY GENDER ORDER BY SCORE DESC,AGE DESC) AS dnk FROM students s)SELECT GENDER,NAME,SCOREFROM dnk_tWHERE dnk 이슈 및 해결 과정 그룹별 top3 추출이라 순번윈도우 함수 활용순번 건너뛰기등 옵션 없으므로 row_number 함수 사용 한줄 포인트pass그룹별 순위 필터링시 고민하지 말고 아묻따 윈도우 함수 사용하자☑️  모든 도서의 고객의 결제/ 미결제 총액 집계하기[문제][문제 풀이] 내 코드 SELECT b.title ,ROUND(SUM(CASE WHEN bo.P..
코테준비 | Active User Retention /mau 조회하기(postgreSQL)
·
SQL
☑️ Active User Retention[문제]2022년 7월 mau(월간 활성 사용자수 ) 조회하기 7월 월간 사용자는 전월에도 활성 유저 여야함 [문제 풀이]내 코드 SELECT EXTRACT('MONTH' FROM event_date) AS month ,COUNT(DISTINCT user_id) AS monthly_active_usersFROM user_actionsWHERE event_type IN ('sign-in', 'like', 'comment')AND TO_CHAR(event_date,'YYYY-MM') ='2022-07'AND user_id IN (SELECT DISTINCT user_id FROM user_actions ..
PostgreSQL | 날짜/시간 함수 정리 (+ DataLemur 문제풀이)
·
SQL
mySQL 과 postgreSQL RDB는 날짜/시간 처리에 사용하는 함수가 다르다. 코테 준비를 하면서 다양한 환경에서 쿼리를 작성 할수 있어야하기 때문에, 주로 사용하는 날짜/시간 함수를 정리했다.➡️ PostgreSQL 날짜 타입 데이터 타입설명예제DATE년-월-일'2004-10-19'  or '10/19/2004'TIMESTAMP년-월-일-시-분-초'2004-10-19 10:23:54' or '10/19/2004 10:23:54'** INTERVAL ' A'시간 간격INTERVAL '1 day' ,interval '2 hours', interval '1 second' 등postgreSQL 은 mysql 의 DATETIME 유형은 없음 ➡️ DATE / TIMESTAMP 타입 연산하기-- 1. da..
SQL 분석기법 | 퍼널 분석 종류 (Open/Closed/Direct funnel) + 주피터 노트북으로 SQL 환경 구축)
·
SQL
➡️ 퍼널 분석 (Funnel Analysis)사용자가 특정 목표(구매, 회원가입, 예약 등)에 도달하는 과정에서의 단계별 이탈률을 분석하는 기법`사용자 경험을 최적화` 하는 분석기법 중 하나임서비스 사용 과정에서 이탈률이 가장 큰 단계를 파악 하는데 도움을 준다.➡️사용자 경험 최적화 분석법퍼널 분석어떤 단계에서 이탈하는지 확인하기 위한 분석 (순방향 )한계점 : 어떻게 이탈하는지는 알수없음 유저패스 분석 어떻게 이탈하는지 확인하기 위한 분석 (순방향 x)ex) 이전단계로 돌아가는지? 아예 이탈하는지? 등등➡️퍼널분석 종류개방형 (OPEN) : 사용자가 `어떤 단계든 퍼널 진입` &순서는 지키면서 다음 단계로 진행한 사용자만 분석예: "회원가입 → 장바구니 → 결제" 과정의 각 단계별 사용자 수 확인폐..
코테준비 | MYSQL 행정구역별 주소 데이터 분리하기 (문자열 SPLIT 하기- SUBSTRING_INDEX)
·
SQL
☑️ 전국 카페 주소 데이터 정제하기[문제]주소 컬럼에서 행정구역별 컬럼 분리 후 카페 갯수 집계 하기[문제 풀이]내 코드 SELECT SUBSTRING_INDEX(address,' ',1) AS sido ,SUBSTRING_INDEX(SUBSTRING_INDEX(address,' ',2),' ',-1) AS sigungu ,COUNT(DISTINCT cafe_id) AS cntFROM cafesGROUP BY sido,sigunguORDER BY 3 DESC 이슈 및 해결 과정 아이디어 : 주소 컬럼에서 행정구역별 추가 컬럼 생성 후 집계행정구역 분리 : `공백` 기준으로 python 에서 `SPLIT` 함수 쓰는이 분리 하면 됨 ex) address 컬럼 값이 '서울시 송파구 오금동..
QCC | 5회차 코드 리뷰 & 피드백
·
SQL
☑️  문제1 . 조건별 연도별 매출 집계[문제][문제 풀이]내 코드 SELECT release_year ,sum(revenue) AS revenueFROM movies m WHERE release_year >=2012 AND VOTE_COUNT >=100 AND JSON_LENGTH(genres)>=2 GROUP BY release_year ORDER BY 1; 이슈 및 해결 과정 단순히 조건 필터링후 집계 하는 문제장르 컬럼이 JSON 타입으로 저장 → 2개이상 조건 필터링시 json 타입의 길이 반환해주는 함수 적용`JSON_LENGTH(genres)``JSON_LENGTH(json_doc)`json 타입의 길이 반환해주는 함수, 유효한 표현식이 아닐경우 에러남중첩된 배열 계산 안함mysq..
코테준비 | MYSQL 피어슨 상관계수 계산 (펭귄 날개와 몸무게의 상관 계수)
·
SQL
☑️  펭귄 날개와 몸무게의 상관 계수[문제]펭귄 날개와 몸무게의 피어슨 상관 계수 계산하기소수점 3째 까지 [문제 풀이]내 코드 WITH avgg as (SELECT species ,flipper_length_mm - AVG(flipper_length_mm) OVER (PARTITION BY species) AS dev_flipper ,body_mass_g - AVG(body_mass_g) OVER (PARTITION BY species) AS dev_bodyFROM penguins)SELECT species ,ROUND(SUM(dev_flipper * dev_body) / (SQRT(SUM(dev_flipper*dev_flipper)) * SQRT(SUM(de..
코테 준비 | 폐쇄할 따릉이 정류소 찾기 2 (union all)
·
SQL
☑️  폐쇄할 따릉이 정류소 찾기 2[문제]solvesql 문제들은 보안 문제로 포인트만 기재특정월 한달동안 정류소에서 발생한 대여/반납 건수가 전년동월 대비 50% 이하인 정류소 확인 후 폐쇄 검토 예정정류소 id, 정류소명,정류소 지역,전년비 (100%) 조건 : 전년비는 소수점둘째까지 출력 , 당월,전년 동월 각각 이용횟수가 0인 경우는 제외 [문제 풀이]내 코드 - 1차 오답WITH r1 AS (SELECT rent_station_id AS id ,DATE_FORMAT(rent_at,'%Y-%m') AS dt ,COUNT(DISTINCT rent_at) as cnt --오류 발생 (자전거별 대여시각이 동일한 경우도 있음) FROM rental_historyWHERE DATE_FO..