오늘 할일
태블로 14일차
HR 대시보드
- 유저 : 인사팀이 직접 분석할 수 있도록 인터랙티브 기능 활용. 결과형 인터랙티브 대시보드 (핵심지표, 트렌드 파악 가능)
- 기능 : 직원 생산성 촉진을 위한 부서별 인력 및 채용 관리
- 요구사항 : 현재근무자수/퇴사자수/근속연수/나이, 부서별 직무별 필터링 기능, 트렌드에 따른 변화 나타내기
- 뷰&데이터&계산식
1) HR Status : 근무자, 퇴사자, 근속연수, 평균나이
2) Department / Job Title 필터
3) Hire & Gender, Race Trend
- 디자인 : 무채색, 막대그래프, 트리맵을 필터로 활용. 트렌드에 최고 최저 최근을 강조점 부여
- 샘플 데이터 : https://data.world/markbradbourne/rwfd-real-world-fake-data
SQL
- SQL php 연결하는 걸 준비할려고 했는데 코딩테스트 쪽 공부하는 걸 우선 진행하기로 했다. 금주에 또 코딩테스트 일정이 잡혔다..
- 많이 진행했었던 프로그래머스 대신 리트코드(leetcode.com)에서 준비를 진행했다. easy 난이도는 풀기 어렵지 않은데 medium 부터 조금씩 어렵다.
예제 1. Combine Two Tables
- 테이블 Person(personId, lastName, firstName), Address(addressId, personId, city, state)
- 테이블의 이름, 성, 도시, 주를 보고하는 SQL문을 작성하시오. PersonID 주소가 테이블에 없을 시 null을 입력할 것
(쿼리문)
SELECT A.firstName, A.lastName, B.city, B.state
FROM PERSON AS A
LEFT JOIN Address AS B
ON B.personID = A.personID
예제 2. Second Highest Salary
- 테이블 Employee(id, salary)
- Employee 테이블에서 두 번째로 높은 급여를 확인할 것
- 처음에는 Salary 내림차순 정렬 후 Limit으로 끊었었는데 300, 200이 나오는 문제 발생. NULL 데이터도 있음
- 사례들을 찾아보니 서브쿼리문 통해서 해결하는 경우가 많았음
(쿼리문)
SELECT IFNULL((SELECT DISTINCT Salary # 중복문 제거
FROM Employee
ORDER BY Salary DESC
LIMIT 1,1 # 두번째 나오는 것),NULL) AS SecondHighestSalary
예제 3. Rank Score
- 테이블 Scores (id, Score)
- 점수가 높은 것부터 낮은 것까지 순위가 매겨져야 한다. 동점일 경우, 순위 번호는 연속된 정수 값으로 순위 사이의 공백은 없어야 함. 내림차순 정렬
- 리트코드에는 Remove, Insert 기능을 제공하지 않는다.
- Dense_Rank를 사용하면 쉽게 풀린다. 중복 값 동일 순위로 표기
(쿼리문)
SELECT score,
dense_rank() over(
ORDER by score DESC
) 'rank'
from Scores;
예제 4. Customers Who Never Order
- 테이블 : Customers (id, name), Orders(id, customerId)
- 한번도 주문하지 않은 고객을 찾으시오
(쿼리문)
select a.name as customers
from customers a
left join orders b
on b.customerid = a.id
where b.id is NULL
예제 5. Game Play Analysis I
- 테이블 : Activity (player_id, device_id, event_date, games_played)
- 플레이어별 맨 처음 로그인한 날짜를 확인해라.
(쿼리문)
select player_id, min(event_date) as first_login
from Activity
group by player_id
내일 할 일
태블로 14일차 : 리텐션 대시보드
리트코드 무료제공 SQL 예제 풀기