사전캠프 7일차
설 연휴가 지나고 다시 사전 캠프가 진행되었다.
오늘도 아티클 스터디와 개인적인 SQL 공부를 진행했다. 나는 SQL 달리기반 문제 풀이와 인프런 중급 강의 4세트 문제를 더 풀었다.
아티클 스터디
오늘은 데이터 분석가로 근무하시는 분이 쓰신 '데이터 분석가가 되어보니 중요한 것들'이 주제이다.
데이터 분석가를 준비하는 과정에서는 미처 몰랐던 점들을 소개해주는 아티클이다.
https://yozm.wishket.com/magazine/detail/1863/
데이터 분석가가 되어보니 중요한 것들 | 요즘IT
개발자, 디자이너, 기획자, HR, 오퍼레이션 등 대부분의 직무에서 우리가 일하기 전 예상했던 업무와 실제 업무에는 차이점이 존재합니다. 비즈니스는 빠르게 변화하기 때문에, 학생 때 배운 교
yozm.wishket.com
- 내가 정리한 내용
[주제]
진짜 데이터 분석가란 무엇인가?
[아티클 요약]
- 데이터 분석가
- 좋은 의사결정을 하도록 돕는 사람
- 1) 데이터에 기반해 2) 성공 확률이 높은 의사결정을 3) 지속적으로 하도록 돕는 사람
- 데이터 기반
- 데이터가 흐르는 조직을 만들기 → 데이터를 쉽게 확인, 주요 지표를 잘 인지하게 → BI 툴 도입, 대시보드 개발 → SQL 교육, 데이터 마트 개발 >> 데이터 히스토리 교육, 원천 데이터 사용을 방지 → PA 툴 활용 등
- 성공 확률이 높은 의사결정
- 상황 정확히 이해 >> 상황에 대한 해석 업데이트, 그 이유 알리기, 도메인 지식 습득(생각의 프레임워크를 사실에 가깝게)
- 목표 설정과 성과 측정 >> A/B테스트
- 지속성
- 비즈니스 사이클에 맞게 분석
- 데이터 분석가는 조직의 전반적인 의사결정 퀄리티를 높이는 사람
[인사이트]
- 데이터 분석가에게 SQL이 중요한 이유와 기업 차원에서 비개발자에게 SQL 교육을 시키는 이유가 데이터 추출의 목적보다 어떤 데이터 히스토리와 맵이 있는지 알리기 위해서라는 점은 처음 알게 된 사실이다. 이를 위해 데이터 마트 구축이 중요하다는 사실을 깨달았다.
- 도메인 지식이 단순히 해당 산업의 이론을 습득하는 것이 아니라 회사의 상황을 정확히 이해하기 위해 필요하다는 것을 알았다.
- 데이터 분석가 채용 공고에 항상 ‘A/B테스트를 설계해보신 분’이 있어서 정확히 무엇인지 궁금했는데, 외부 요인을 배제하고 성과 측정을 하기 위한 지표임을 알았다.
DBeaver 다운로드, 설치
달리기반 문제를 풀 때, sparta Database에 접속해서 직접 데이터를 추출하며 확인할 수 있다고 했다.
1, 2번까지 풀 때 설치에 한 번 실패했어서 다시 시도중이다.
설치과정에서 동일한 오류가 자꾸 발견돼서, 결국 slack 질문방에 도움을 요청했고, 다음과 같은 링크를 얻었다.
https://computer-science-student.tistory.com/719
DBeaver(디비버) Public Key Retrieval is not allowed 에러
DBeaver(디비버) Public Key Retrieval is not allowed 에러 디비버에서 MySQL 데이터베이스 접속을 잘하다가 갑자기 Public Key Retrieval is not allowed 에러를 만났다. MySQL의 8.x 버전 이후부터 발생하는 문제라고 한
computer-science-student.tistory.com
결과적으로, 나 혼자 알아서 연결하는 것이 아니라 스파르타 코딩클럽에서 제공하는 '엑셀보다 쉽고 빠른 SQL' 강의의 1주차 영상에 어떤 server host, username, password를 작성해야 하는지 알려준다.
기본 문법 다 안다고 해서 이 강의를 소홀히 생각하지 말자..
쿼리를 작성할 때는 밑의 사진에서 '탐색' 밑의 양피지 그림이 있는 아이콘을 선택하면 된다.
쿼리 실행은 단축키로 Ctrl + Enter
쿼리 옆의 화살표 버튼을 클릭해도 된다.
SQL 달리기반 3번 문제
[제목]
이용자의 포인트 조회하기
[상황]
이번에는 이용자들 별로 획득한 포인트를 학생들에게 이메일로 보내려고 합니다. 이를 위한 자료를 가공해봅시다. 특히 users 테이블에는 있으나 point_users 에는 없는 유저가 있어요. 이 유저들의 경우 point를 0으로 처리합시다.
[문제]
- 다음과 같은 결과 테이블을 만들어봅시다.
- user_id: 익명화된 유저들의 아이디
- email: 유저들의 이메일
- point: 유저가 획득한 포인트
- users 테이블에는 있지만 point_users에는 없는 user는 포인트가 없으므로 0 으로 처리
- 포인트 기준으로 내림차순 정렬
[데이터 설명]
- users 테이블은 스파르타 코딩클럽에 가입한 유저들의 정보를 날짜별로 기록한 테이블입니다.
- user_id: 익명화된 유저들의 아이디(varchar255)
- created_at: 아이디 생성 날짜(timestamp)
- updated_at: 정보 업데이트 날짜(timestamp)
- name: 익명화된 유저들의 이름(varchar255)
- email: 이메일(varchar255)
- point_users 테이블은 스파르타코딩클럽 가입 유저들의 포인트에 대한 정보를 기록한 테이블입니다.
- point_user_id: point_users 테이블의 행을 구별하기 위한 key(varchar255)
- created_at: 아이디 생성 날짜(timestamp)
- updated_at: 정보 업데이트 날짜(timestamp)
- user_id: 익명화된 유저들의 아이디(varchar255)
- point: 보유하고 있는 포인트(int)
문제 접근
- 두 테이블 left join, 기준 칼럼 user_id
- users에는 있고 point_users에는 없는 유저를 0으로 표시 >> ifnull 사용
- point 기준 desc
- 아웃풋에 나타날 칼럼명 주의
최종 코드
SELECT u.user_id, u.email, IFNULL(p.point, 0) as point
FROM users u
LEFT JOIN point_users p ON u.user_id = p.user_id
ORDER BY point DESC
+) 해설에 나와있는 또다른 풀이
SELECT u.user_id, u.email,
COALESCE(p.point,0) as point
FROM users u
left JOIN point_users p ON u.user_id = p.user_id
order by p.point desc;
'내배캠 데이터분석가 과정 > 사전캠프 TIL' 카테고리의 다른 글
[사전캠프 11일차] 아티클 스터디 + SQL 달리기반 4번 문제 풀이 (0) | 2025.02.07 |
---|---|
[사전캠프 9일차] 아티클 스터디 (0) | 2025.02.05 |
[사전캠프 8일차] 아티클 스터디 (0) | 2025.02.04 |
[사전캠프 5일차] 아티클 스터디 + SQL 달리기반 2번 문제 (0) | 2025.01.24 |
[사전캠프 1일차] 아티클 스터디 + SQL 달리기반 1번 문제 (0) | 2025.01.20 |