소개
수학으로 시작하여 개발자 커리어 이후, 통계 공부를 통해 현재는 데이터 분석가로 정착한 Gemma 입니다. 데이터 분석은 흐르고 넘치는 빅데이터 안에서 참신한 인사이트와 트렌드를 파악하는게 가장 중요합니다. 말이야 쉽죠? 하지만 적절한 분석툴과 방법을 활용할 수 있다면 충분히 누구나 귀중한 보석을 발견할 수 있어요. 이러한 방법론을 여러분에게 공유하고자 합니다.
(현) 데이터 분석가
학사 수학과 졸업, 석사 통계학 졸업
https://blog.naver.com/italian-lesson
(개인 블로그)
강의
전체3수강평
- 감사합니다. 유익한 강의였습니다.
김영훈
2024.04.25
1
게시글
질문&답변
2024.05.14
Date 강의 / leetcode 1321 질문
승렬님 안녕하세요:) 참신한 방법으로 풀어주셨는데요! 먼저 승렬님께서 간과했던 부분을 말씀드리겠습니다. 승렬님처럼 작성하면 2019-01-08 데이터가 포함됩니다. 데이터는 2019-01-04부터 시작하는데, 7일치의 데이터가 안 만들어지기 때문에 2019-01-08 데이터는 포함되면 안됩니다. (그런 의미에서 2019-01-09도 들어가면 안되는데, 승렬님 코드로 Output에 포함됨) 하지만 이렇게 잘못 포함된 이유는 having count(amount) >= 7 로 작성하셨기 때문입니다. 그러면 160부터 90까지의 amount 데이터가 7개 존재하기 때문에, 2019-01-08 데이터도 조건에 포함되어서 들어가게 된 것입니다. (사진) 그럼 승렬님과 비슷한 로직으로 올바르게 작성하려면 아래와 같이 작성하면 됩니다. (having절을 having count(distinct a.visited_on) = 7 로 바꿨습니다.) select b.visited_on, sum(amount) as amount, round(sum(a.amount) /7, 2) as average_amount from customer a inner join ( select distinct date_sub(visited_on, interval 6 day) as week_before, visited_on from customer ) b on a.visited_on between b.week_before and b.visited_on group by b.visited_on having count(distinct a.visited_on) = 7 order by b.visited_on; 이렇게 보면 헷갈릴 수 있으니 select * inner join order by까지만 작성 후 풀어헤쳐보면 아래와 같이 결과가 나올텐데요. 여기서 2019-01-08과 같은 데이터는 포함하지 않게 하기 위해서, having절에 distinct a.visited_on의 개수가 7개가 되어야 한다는 조건을 추가해서 제거합니다. (사진) 혹시 읽으시고 이해가 안가면, 편하게 질문 다시 주셔요 :)
- 1
- 1
- 46
질문&답변
2024.05.07
cross join, full join강의 / leetcode 1280번 문제 질문드립니다
승렬님 안녕하세요:) 늘 참신한 질문을 주셔서 감사합니다. leetcode: https://leetcode.com/problems/students-and-examinations/description/ 승렬님의 질문이 위의 코드 ( e.subject_name -> 정답 코드)와 아래 코드( a.subject_name -> 오답 코드)의 차이가 무엇이냐로 이해했는데요. (사진) (사진) 이해를 위해 아래와 같이 데이터를 좀더 풀어봤습니다. (select *로 확인) (사진) 왼쪽 노란색 박스는 a temp table에서, 오른쪽 노란색 박스는 e temp table에서 온 결과입니다. 참고로 초록색 박스의 row가 왜 3개인지 말씀 드리면, a temp table에서는 (1, Alice, Math) 조합이 1개이지만, e temp table에서는 (1, Math) 조합이 3개이므로 조인하는 과정에서 3개로 뻥튀기된 것입니다. 승렬님의 질문은 분홍색 박스를 확인하면 되는데요. a temp table에서는 늘 subject_name이 들어있습니다. (분홍색 박스에서 Physics 존재) 반면 e temp table에서는 Examinations table에 없다면 조인할 데이터가 없으므로 null로 나타날 것입니다. null 데이터는 count 자체가 성립이 안되기 때문에, count(null)=0이 됩니다. 그렇기 때문에 우리의 정답 코드처럼 count(e.subject_name) 을 하면 0으로 나오는 것입니다. 반면 Physics는 count를 할 수 있기 때문에, count(Physics)=1이 됩니다. 그렇게 때문에 오답 코드 처럼 count(a.subject_name) 을 하면 늘 1로 나오는 것입니다. 읽어보시고 이해 안가는 부분이 있으시면, 추가 질문 부탁드립니다:)
- 1
- 1
- 62
질문&답변
2024.05.02
not In강의 / leetcode 1978 질문 드립니다
승렬님 안녕하세요:) leetcode 문제: https://leetcode.com/problems/employees-whose-manager-left-the-company/description/ 먼저, 이해하기 쉽게 Employees 테이블을 전체 조회하면 아래처럼 나옵니다. (사진) 그 다음에 서브쿼리를 쓰지 않고 바로 not in으로 비교하면, row별 manager_id와 employee_id를 비교 하게 됩니다. (사진) 이건 마치 manager_id와 employee_id가 서로 다른 row를 조회하는 셈이 되는데요. 전체 Employees 테이블 조회했을 때 나왔던 manager_id=null이 여기서 나오지 않은 이유는, null은 특정 값과 비교자체가 안되기 때문입니다. (숫자 '0'이 '4'와 다르다라고 말할 수는 있어도, '없다'(=null)과 '4'와 같다, 다르다라고 비교 자체가 성립되지 않습니다) (사진) 하지만 이렇게 서브쿼리를 쓴다면, 이제 더이상 row별로 manager_id와 employee_id가 다른지 비교하는게 아니라, manager_id가 ( 3, 12, 13, 1, 9, 11)이 아니기만 하면 된다라는 조건으로 바뀝니다. 그리고 이게 실제 문제를 풀려고 우리가 의도했던 로직이 됩니다. select employee_id from Employees where salary (사진) 읽으시고 추가 궁금한 부분 있으시면, 언제든지 질문 주세요:)
- 1
- 1
- 58
질문&답변
2024.04.14
South Superstore 수업 자료 파일 오류
2-1. 선영님 혹시 Tableau Public이 아닌, Tableau Desktop 사용 중이실까요? Tableau Desktop 버전을 업그레이드 시킨 후에, 그 전에 생성한 workbook을 열려고 할 때 -> 연결된 data source(엑셀)가 연결이 안될 때도 있다고 합니다. 일단 선영님께서 이러한 상황이셨는지 확인 부탁드립니다. (사진) https://help.salesforce.com/s/articleView?id=001471860&type=1 2-2. 제가 첨부한 'South-Superstore.xlsx' 엑셀은 아래 github에서 다운로드하였습니다. 해당 엑셀은 row 개수가 1000개 정도이여서 가벼워서 빠르기 때문에 선택하였습니다. https://github.com/ARAPIL/South-Superstore/blob/master/South-Superstore.xlsx Tableau Desktop 또는 Public 프로그램에서 'Sample - Superstore.xls'를 사용할 수 있습니다. 하지만 해당 데이터들은 row 개수가 9000개 이상 넘어가서 조작하는데 느리기 때문에 사용을 지양하였습니다. (사진)
- 0
- 2
- 83
질문&답변
2024.04.14
South Superstore 수업 자료 파일 오류
선영님 안녕하세요:) 흠 이상하네요... 강의 업로드하는 란에서는 엑셀 확장자로 나오는데요. 선영님께서 말씀 주신 것처럼 저도 다운받으면 선영님처럼 다운 받아지네요. 확인하는 과정에서 다른 파일들도 이상하게 다운 받아져서 다시 일괄 업로드 하였습니다. 다시 다운 받으시면 됩니다! 제보 감사합니다. 이 부분은 인프런 팀에 제가 따로 문의해보도록 하겠습니다.
- 0
- 2
- 83