MySQL 17

신한카드 데이터 분석 3: 질문에 대한 답을 찾는 과정 with PyCharm

이번 포스트에서는, 프로젝트 초반에 설정햇던 질문에 대한 답 찾아보기 조회된 결과에 대해 나름의 분석과 의미 찾기 프로젝트 초반에 설정해 두었던 질문은 다음과 같다. 성별 및 연령별 소비 분야에 대해 어떠한 차이가 있는가? 요일별 외식 소비에 차이가 있는가? MZ세대의 과시소비(백화점, 골프, 호텔) 경향 확인해보기 질문에 대한 답을 찾기에 앞서, 중간 정리 단계가 필요하다고 생각하였다. 해당 데이터는 서울/경기에 주로 집중되어 있음. (수도권 과밀화로 인한 것으로 추정) 수도권 지역과 지방의 소비 패턴 비교, 국내외 소비 패턴 비교까지 한다면 범위가 방대해질 것으로 보았음. 수도권으로 한정하여 이용자들의 소비 패턴을 분석하고자 함. 설정한 질문들은 모두 개인 소비에 대한 것임. 개인/법인 분류 컬럼을 ..

Toy Projects 2024.04.04

신한카드 데이터 분석 2.2: 전처리 과정을 통해 데이터 파악하기 with DataGrip

이번 포스트에서는, 국내 이용자들에 이어서 국외 이용자들의 집단별 카드이용금액과 카드이용건수 조회 국내외 이용자들의 매출액 테이블과 업종별 분류 코드 테이블 JOIN 더 구체적인 그룹화를 통한 데이터 파악 1. 국외 이용자들의 카드이용건수와 카드이용금액 조회하기 1) 국가별 카드 이용금액과 이용건수 합계 미국의 카드 이용금액과 이용건수가 압도적으로 높은 것을 확인. 일본의 경우 이용금액이 낮은 편이지만 이용건수는 다른 국가들보다 높은 편임을 알 수 있음. # (국외) 국가별 카드이용금액과 카드이용건수 SELECT `국가별(COUNTRY_ENG_NM)`, SUM(`카드이용금액계(AMT_CORR)`) AS '카드이용액', SUM(`카드이용건수(USECT_CORR)`) AS '카드이용건수' FROM sales..

Toy Projects 2024.03.26

신한카드 데이터 분석 2.1: 전처리 과정을 통해 데이터 파악하기 with DataGrip

이번 포스트에서는, 데이터 전처리 개념과 과정 이해 전처리 해보기 전처리 과정을 통해 데이터 파악하기 1. 데이터 전처리 데이터 전처리는 분석을 위해 수집한 데이터를 분석에 적합한 형태로 가공하는 것이다. 가공된 데이터는 분석 모델을 구축하고 정확한 분석 결과를 제공해 준다. 전처리 과정에서 생각해야 할 것은, 불필요한 데이터 제거 🙅🏻 결측치나 이상치 처리 🔍 2. 데이터 전처리 과정 데이터 정제: 결측치, 이상치를 처리하여 결과에 영향을 미치는 오류 방지 데이터 변환: 날짜, 문자열 변환 데이터 필터링: 조건에 따른 데이터 추출 데이터 정렬: 분석에 필요한 순서대로 데이터 정렬 데이터 그룹화: 그룹별로 분류 후 통계 정보 추출 데이터 병합 및 분할 데이터 샘플링: 샘플 데이터 추출 후 분석 데이터 집..

Toy Projects 2024.03.26

프로그래머스: 연간 평가점수에 해당하는 평가 등급 및 성과금 조회하기 - 시도 및 해결 과정 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 사원명, 보너스 조회 HR_GRADE 👉🏻 평가 등급 조회 평가 점수별 등급과 성과금 정보에 따른 값 계산하기 사번 ASC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 나의 시도 시도 1) 테이블 DEPT은 조회할 컬럼이 없으니 제외하고, 테이블 EMP와 테이블 GR은 ‘사번’이라는 동일한 컬럼을 가지고 있으니 INNER JOIN을 해준다. SELECT FROM HR_EMPLOYEES AS EMP INNER JOIN HR_GRADE AS GR ON EMP.EMP_NO = GR.EMP_NO 시도 2) 아래는 ‘평가 점수별 등급과 ..

Skills/SQL 2024.03.13

프로그래머스: 부서별 평균 연봉 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 부서 ID, 영문 부서명 조회 HR_EMPLOYEES 👉🏻 평균 연봉 조회 평균 연봉은 소수점 첫째 자리에서 반올림하기 부서별 평균 연봉 DESC 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP 4. 풀이 과정 1단계) 두 테이블을 연결하여 부서별 평균 연봉을 알아보아야 하니 부서 ID를 기준으로 INNER JOIN을 적용해 줍니다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_EMPLOYEES AS EMP ON DEPT.DEPT_ID = EMP.DEPT_ID 2단계) 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SELECT문을 작성해 준다. AVG() 함수..

Skills/SQL 2024.03.13

프로그래머스: 업그레이드 할 수 없는 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 ITEM_INFO 👉🏻 아이템 ID, 아이템 명, 희귀도 조회 ITEM_TREE 👉🏻 (서브 쿼리를 이용할 때) PARENT 아이템 ID 조회 더 이상 업그레이드 할 수 없는 아이템이어야 함 아이템 ID DESC 3. 테이블 ITEM_INFO ITEM_TREE 4. 풀이 과정 (LEFT JOIN 사용) 1단계) '두 테이블을 이용하여 더 이상 업그레이드 할 수 없는 아이템'을 조회하기 위해, 교집합을 보여주는 INNER JOIN 말고 다른 것을 생각해 볼 필요가 있다. ITEM_INFO 테이블을 기준으로 아이템들의 업그레이드 전을 보아야 하니 LEFT JOIN을 해 준다. 아래의 출력값을 보면 업그레이드가 가능한 아이템 리스트를 볼 수 있는데, 여기서 아이템 ..

Skills/SQL 2024.03.13

프로그래머스: 노선별 평균 역 사이 거리 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, SUBWAY_DISTANCE 👉🏻 노선, 총 누계 거리, 평균 역 사이 거리 조회 1) 노선 별 그룹화 2) 총 누계 거리는 소수 둘째 자리에서, 평균 역 사이 거리는 소수 셋째 자리에서 반올림 3) ‘km’ 단위 붙이기 총 누계 거리 DESC 문자열을 합체 및 연결해 주는 CONCAT 함수 생각하기 3. 테이블 SUBWAY_DISTANCE 4. 풀이 과정 1단계) 총 누계 거리는 역 사이의 거리의 총합을 의미하는데, SUM() 함수를 이용하여 총합을 계산해 준다. 그리고 AVG() 함수를 이용하여 평균 역 사이의 거리를 계산해 준다. 계산한 두 값은 ROUND() 함수를 이용하여 소수 둘째 자리와 소수 셋째 자리에서 반올림 해준다. SELECT ROUTE, ROUND(..

Skills/SQL 2024.03.12

프로그래머스: 연도별 평균 미세먼지 농도 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전 생각해 볼 것 AIR_POLLUTION 👉🏻 연도, 평균 미세먼지 오염도, 초미세먼지 오염도 조회 1) 수원 지역으로 한정하기 2) 연도 별 그룹화하기 3) 평균 미세먼지, 초미세먼지 오염도는 소수 셋째 자리에서 반올림 YEAR ASC 값을 반올림하여 출력해 주는 ROUND 함수의 개념과 작성 방식 생각하기 3. 테이블 AIR_POLLUTION 4. 풀이 과정 1단계) 특정 지역으로 한정해서 조회를 해야 하니 WHERE절을 통해 ‘수원’만 조회하는 조건을 추가해 준다. SELECT FROM AIR_POLLUTION WHERE LOCATION2 = '수원' 2단계) YEAR()함수를 이용하여 컬럼 YM에서 연도만 추출해 준다. 그리고 AVG() 함수를 통해 미세먼지와 초미세먼..

Skills/SQL 2024.03.12

프로그래머스: 조건에 맞는 사원 정보 조회하기 (MySQL)

1. 문제 2. 문제 풀기 전에, HR_DEPARTMENT 👉🏻 X HR_EMPLOYEES 👉🏻 사번, 성명, 직책, 이메일 HR_GRADE 👉🏻 점수 합계 상, 하반기 접수 합계가 가장 높은 사원 정보 조회하기 점수 합계 DESC (=점수 높은 순으로) 3. 테이블 HR_DEPARTMENT AS DEPT HR_EMPLOYEES AS EMP HR_GRADE AS GR 4. 풀이 과정 1단계) 테이블 DEPT와 테이블 EMP는 DEPT_ID라는 공통 컬럼을 가지고 있고, 테이블EMP와 테이블 GR은 EMP_NO라는 공통 컬럼을 가지고 있다. 이 세 테이블을 연결하여 쿼리문을 작성해야 하니 INNER JOIN을 해준다. SELECT FROM HR_DEPARTMENT AS DEPT INNER JOIN HR_E..

Skills/SQL 2024.03.09

프로그래머스: ROOT 아이템 구하기 (MySQL)

1. 문제 2. 문제 풀기 전에, ITEM_INFO 👉🏻 아이템 ID, 아이템 명 조회 ITEM_TREE 👉🏻 X ROOT 아이템 조회하기 아이템 ID ASC 3. 테이블 ITEM_INFO AS INFO ITEM_TREE AS TREE 4. 풀이 과정 1단계) 테이블 INFO와 테이블 TREE가 공통으로 가지고 있는 컬럼인 ITEM_ID를 이용하여 INNER JOIN을 해준다. SELECT FROM ITEM_INFO AS INFO INNER JOIN ITEM_TREE AS TREE ON INFO.ITEM_ID = TREE.ITEM_ID 2단계) ‘PARENT 아이템이 없는 아이템을 ROOT 아이템’이기 때문에, IS NULL을 이용하여 PARENT_ITEM_ID 컬럼에서 NULL 값을 조회하는 WHERE..

Skills/SQL 2024.03.09