Today I learned(0411)

윤진호·2022년 4월 11일
0

Today I Learned

목록 보기
13/16

오늘 할일

태블로 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 예제 풀기

profile
데이터 분석가

0개의 댓글