본문 바로가기

데이터 분석68

[SQL] CTE, 뷰 그리고 임시 테이블 대용량 데이터를 다룬 이후로 성능에 대한 관심이 커졌다. 특히 자주 사용하는 컬럼들에 대해 임시 테이블을 생성했던 것이 다른 테이블들과 조인 시 확실히 효율적이고 체감 성능도 개선되었던 좋은 경험이었다. 그래서 CTE와 뷰, 임시 테이블을 사용할 때 실제로 성능 차이가 있는지, 그리고 임시 테이블을 생성하기까지 몇 차례의 시행착오가 있었기 때문에 CTE와 임시 테이블을 언제, 어떻게 사용해야 할지 알아보았다. CTE와 뷰의 차이 우선 CTE와 뷰에 대해서는 이전에 메모해둔 내용이 있어서 다시 찾아보았다. 오늘 강의에서는 뷰에 대한 내용이 있었는데 뷰의 쓰임 중 하나가 복잡한 연산을 용이하게 하는 것이어서 with절과의 차이가 무엇인지 궁금해서 추가로 찾아보았다.​ ​임시테이블이라는 관점에서는 유사하지만 .. 2023. 5. 17.
Placements (HackerRank) Placements | HackerRank Write a query to output the names of those students whose best friends got offered a higher salary than them. www.hackerrank.com Write a query to output the names of those students whose best friends got offered a higher salary than them. Names must be ordered by the salary amount offered to the best friends. It is guaranteed that no two students got same salary offer. 풀이.. 2023. 3. 28.
262. Trips and Users (LeetCode) Trips and Users - LeetCode Can you solve this real interview question? Trips and Users - Table: Trips +-------------+----------+ | Column Name | Type | +-------------+----------+ | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | request_at | leetcode.com Write a SQL query to find the cancellation rate of requests with unbanned users (both client and drive.. 2023. 3. 27.
어떤 데이터를 봐야 할까? - 지표 설정 오늘 처음 만난 사람에게 데이터를 보여주면서 '이것이 문제입니다'라고 말할 때 어떤 데이터를 활용해야 할까? 문제라고 정의한 것과 이를 설명하기 위한 데이터(지표)가 논리적으로 일치하지 않는 경우가 많다. '어딘가에서 그래프와 표를 수집해서 그로부터 내릴 수 있는 결론을 내리'는 접근법을 취하기 때문인데 이처럼 '데이터 중심'으로 분석하다 보면 단순히 데이터를 통해 알 수 있는 사실을 열거하게 될 뿐이다. 따라서 '목적 중심'으로 말하고자 하는 결론에 부합하는 데이터를 제시하기 위해서는 용어의 정의가 명확하고 설득력 있는지 목적과 문제, 결론과 활용된 데이터가 일치하는지 검토하여 적합한 지표를 설정해야 한다. 잘못된 지표 설정 사례 1. 문제 정의가 명확하지 않은 경우 문제: 고객 불편사항에 대한 개선이.. 2023. 2. 20.
야 너두 수요 예측 할 수 있어! - 이동 평균 데이터 분석은 예측이다 방향성, 대상, 목표, 규모, 패턴, 전략 수립 등 통찰을 원하는 모든 행위가 더 나은 내일을 위한 것이라면 데이터 분석은 모두 예측을 위한 행위라고 할 수 있다. 출처: 한 달 공부 데이터 분석(71p) 시계열 분석은 과거의 데이터를 바탕으로 미래의 상황을 예측하는 데이터 분석 방법이다. 시계열 분석 방법 중 가장 기본이 되는 이동평균법으로 매출 수요를 산출해보고 실제 해당 년도의 매출과 얼마나 일치하는지 비교해보려고 한다. 이동평균에 의한 수요 예측은 다음의 두 가지를 고려한다. 이동평균은 장기적인 예측보다 다음 차수의 예측값을 확인하는 데에 적합하다 이동평균을 구해 예측할 때는 언제나 예측값에 따른 변화와 실제 매출 추이를 비교하고 점검한다 필요 데이터 2 ~ 3개년의 월별 .. 2023. 2. 3.
왜 내가 한 데이터 분석은 그저 그런 것일까? - 문제 정의 “데이터 분석을 통해 상황을 파악하고 문제를 정의한다”는 말의 의미 갖고 있는 데이터를 적당히 만지다 보면 어떤 추세나 특징을 파악할 수는 있겠지만 이를 통해 알 수 있는 사실은 제한적이다. 그래서 이미 알고 있는 내용의 그저 그런 분석에 그치게 되는데 이 때 선행되어야 하는 것이 ‘문제 의식’이다. 문제 의식은 무엇을 알고 싶은지, 이를 확인할 수 있는 지표를 어떻게 정의할지, 확인한 사실로 무엇을 하고 싶은지 객관적인 주장을 합리적인 결론으로 도달하게 하는 문제 해결 중심의 사고방식이다. 특히 내가 가장 어려움을 느낀 부분은 현상과 문제, 원인을 구분해서 정의하는 것인데 이것도 앞서 연습한 가설-검증 방법 수립처럼 훈련이 필요하다. (사실 문제 정의 단계가 선행되어야 한다) 따라서 겉으로 드러난 현상.. 2023. 1. 30.
지표 개선은 어떻게 하는 거에요? - 가설과 검증 목표 지표가 있다는 전제하에 지표를 개선하기 위해서는 '어떤 액션이 지표에 영향을 주었는지' 확인해야 한다. 지표를 개선하려면 1) 달성하고 싶은 지표를 결정한다. 2) 사용자 행동 중에서 지표에 영향을 많이 줄 것으로 보이는 행동을 결정한다. 3) 2)에서 결정한 행동 여부와 횟수를 집계하고 1)에서 결정한 지표를 만족하는 사용자의 비율을 비교한다. 예) [목표] 다음날 지속률을 개선하고 싶다 [가설] 다음날 지속해서 사용하는 사용자는 등록 당일에 특정 액션을 취하지 않을까? [검증] 등록 당일에 액션을 했는지 여부를 집계하고 다음날 지속률 비율을 비교한다 출처: 데이터 분석을 위한 SQL 레시피(301p) 돌려 돌려 말했지만 결국 특정 액션 여부와 횟수에 따라 지표의 결과가 어떠한지 액션과 지표의 관.. 2023. 1. 13.
[Tableau] 고객 세분화 관리를 위한 대시보드(1) - 고객 세분화 그룹 구하기(RFM) 지난번에 RFM 사용자 그룹 정의에 따라 SQL로 고객 세분화 그룹을 구했었는데 이번에는 동일한 작업을 태블로로 구현해보았다. 결과물 ▼SQL로 고객 세분화 그룹 구하기▼ 사용자 분석 - RFM 구하기 충성고객에게 혜택을 주는 이벤트를 기획 중입니다 구매금액이 큰 순서로 충성고객 리스트를 뽑아주세요 문제 정의하기 충성고객은 장기적이고 지속적인 관점에서 서비스 온보딩 여부(+사용자 hyeyun133.tistory.com 필요한 데이터 주문 데이터(+주문 상세 데이터), 유저 데이터 필드 생성 1) 기본 필드 연산하기 Number of Order: 주문수 COUNTD([Order No]) Max Order Date of the Year: 년도별 최신일자 {FIXED YEAR([Order Date]): MAX.. 2023. 1. 12.
사용자 분석 - 리텐션에 영향을 주는 액션 구하기 우리 서비스의 주간 리텐션을 알고 싶어요 리텐션을 높이려면 어떻게 해야 하나요? 문제 정의하기 리텐션은 고객이 유지되는 비율로 잔존율이라고도 표현한다. 사용자가 서비스를 지속적으로 이용하는데에는 다양한 요인이 복합적으로 작용하므로 단순히 기능 추가나 UI 개선으로 리텐션 개선의 본질적인 문제를 해결할 수 있다고 보기 어렵다. 따라서 리텐션에 긍정적/부정적 영향을 주는 요인을 강화/제거하는 방향으로 접근하는 것이 바람직하다. 가령 14일 차의 리텐션을 개선하고 싶다면 7일 차의 리텐션 판정 기간 동안 사용자가 어떠한 액션을 했는지 조사한다. 리텐션에 영향을 주는 액션의 사용률이 낮다면 사용자들이 해당 액션을 할 수 있게 설명을 추가하거나 이벤트를 통해 액션 사용을 촉진하고 사용자 시나리오와 동선 등도 함께.. 2023. 1. 9.
[SQL] 데이터 정합성 검증하기(3) - 이상값 이상값: 너무 많거나, 너무 적을 때 이상값은 엄연히 따지면 에러는 아니지만 분석에 방해가 되는 노이즈에 해당되기 때문에 전처리가 필요하다. 이상값 역시 이상값의 여부를 먼저 확인하고 이상값의 원인이 되는 요인을 제거해주는 방식으로 접근한다. 1) 데이터의 분산 확인하기 이상값을 찾는 방법 중 하나는 분산을 확인하고 분산에서 많이 벗어난 값을 찾는 것이다. ① 세션 별 조회수 구하기 → 어떤 세션의 조회수가 극단적으로 많다면 크롤러이거나 내부 IP일 가능성이 있다. with session_cnt as ( select session, count(session) as cnt from action_log_with_noise group by session) select session, cnt, rank() ov.. 2023. 1. 2.