Chapter 4. HR 데이터를 통한 채용 기획하기
Adhoc Analysis란?
- 특정 질문에 대한 답이나 특정 문제 해결을 위해 예정에 없던, 일회성으로 수행되는 데이터 분석이다.
- 사전에 계획되거나 정기적으로 수행되는 분석과는 달리, 필요에 따라 즉석에서 수행된다.
사용해볼 Tool
Dbeaver 자주 쓰는 단축키
TABLE CREATE
- 기존 존재하는 원천 테이블로부터 새로운 2개의 Mini Table 생성
- 먼저 STRING Type을 담고있는 칼럼을 모은 테이블부터 생성
- STRING을 담고 있는 테이블을 VARCHAR가 아닌 VARBINARY로 바꿔준다.
VARCHAR vs VARBINARY
VARCHAR
- 문자 데이터 유형: VARCHAR는 가변 길이의 문자 데이터를 저장하기 위해 사용됩니다. 이 데이터 형식은 알파벳, 숫자, 기타 문자(공백 포함)를 저장하는 데 적합합니다.
- 문자 집합 인코딩: 저장되는 데이터는 데이터베이스의 문자 집합 설정에 따라 인코딩됩니다. 예를 들어, UTF-8, Latin1 등 다양한 문자 인코딩을 지원할 수 있습니다.
- 가변 길이: VARCHAR는 지정된 최대 길이까지 문자열 데이터를 저장할 수 있으며, 실제로 사용하는 데이터 길이에 따라 저장 공간을 조정합니다.
VARBINARY
- 바이너리 데이터 유형: VARBINARY는 가변 길이의 바이너리 데이터(예: 이미지, 파일, 이진 데이터 등)를 저장하기 위해 사용됩니다.
- 인코딩 없음: 바이너리 데이터는 인코딩되지 않고 원시 형태 그대로 저장됩니다. 이는 VARBINARY가 문자 집합이나 인코딩에 영향을 받지 않는다는 것을 의미합니다.
- 가변 길이: VARBINARY도 지정된 최대 길이까지 바이너리 데이터를 저장할 수 있으며, 실제로 사용하는 데이터 길이에 따라 저장 공간을 조정합니다.
주요 차이점
- 데이터 유형: VARCHAR는 문자 데이터를 위한 것이며, VARBINARY는 바이너리 데이터를 위한 것입니다.
- 인코딩: VARCHAR 데이터는 문자 인코딩에 영향을 받지만, VARBINARY 데이터는 인코딩 없이 원시 형태로 저장됩니다.
- 용도: VARCHAR는 주로 텍스트 데이터를 저장하는 데 사용되며, VARBINARY는 이미지, 오디오 파일, 또는 다른 이진 형식의 데이터를 저장하는 데 사용됩니다.
이러한 차이점으로 인해, VARBINARY를 사용하면 OS 셋팅 없이 대소문자 구분하여 데이터를 기입할 수 있다.
DATA INSERT
HR 데이터를 두 개의 테이블(문자열 타입과 숫자 타입)로 나누어서 담는다.
SQL 쿼리문 Tips
- SELECT: 데이터를 선택할 열(컬럼)을 지정합니다. 계산이 필요한 경우, 이 부분에서 함수를 사용하거나 새로운 데이터 형태를 만들 수 있습니다.
- FROM: 데이터를 가져올 테이블을 지정합니다. 여러 테이블에서 데이터를 가져오는 경우, 이 부분에서 JOIN을 사용하여 테이블을 결합합니다.
- WHERE: 특정 조건에 맞는 데이터만 필터링합니다. 이 조건은 FROM 절에서 지정한 테이블의 데이터에 적용됩니다.
- GROUP BY: 선택한 데이터를 특정 열의 값에 따라 그룹화합니다. 주로 집계 함수(AVG, SUM, COUNT 등)와 함께 사용됩니다.
- HAVING: GROUP BY로 생성된 그룹에 조건을 적용하여 필터링합니다. WHERE 절과 비슷하지만, 그룹화된 결과에 대해 조건을 적용할 때 사용됩니다.
- ORDER BY: 결과 데이터를 특정 열의 값에 따라 정렬합니다. 오름차순(ASC) 또는 내림차순(DESC)으로 정렬할 수 있습니다.
- LIMIT: 반환되는 데이터의 수를 제한합니다. 특히 대용량 데이터를 다룰 때 유용하며, 테스트 쿼리를 작성할 때도 자주 사용됩니다.
Limit & Having
Limit을 지정하여서 검색에서 몇 개를 산출 할지 정할 수 있다.
order by로 정렬하여 순위가 높은 Top5을 구할 수도 있다.
SELECT Department, EducationField, count(*) AS hc
FROM hr.hr_cate hc
LEFT JOIN hr.hr_number hn
ON hc.EmployeeNumber = hn.EmployeeNumber
GROUP BY 1, 2
ORDER BY 3 DESC
LIMIT 5
Having은 Group by의 조건에서 사용된다.
Q. 동일한 Department에 EducationField를 가진 사람들끼리 그룹군을 나눈다고 합니다. 한 그룹군(hc)에 30명 이하인 그룹군만 보여주세요.
SELECT Department, EducationField, count(*) AS hc
FROM hr.hr_cate hc
LEFT JOIN hr.hr_number hn
ON hc.EmployeeNumber = hn.EmployeeNumber
GROUP BY 1, 2
HAVING hc <= 30
'제로베이스 데이터 분석 취업 스쿨 2기 > SQL 분석' 카테고리의 다른 글
[제로베이스 데이터 분석 취업 스쿨]Day26 SQL 분석10 (0) | 2024.03.04 |
---|---|
[제로베이스 데이터 분석 취업 스쿨]Day25 SQL 분석9 (0) | 2024.02.26 |
[제로베이스 데이터 분석 취업 스쿨]Day23 SQL 분석7 (0) | 2024.02.18 |
[제로베이스 데이터 분석 취업 스쿨]Day22 SQL 분석6 (1) | 2024.02.17 |
[제로베이스 데이터 분석 취업 스쿨]Day21 SQL 분석5 (0) | 2024.02.11 |