비투엔 라이프/스토리

재미삼아 풀어보는 SQL 작성 QUIZ!

알 수 없는 사용자 2016. 1. 8. 10:31



안녕하세요! 비투엔 남성윤 전임입니다.

SQL은 데이터베이스 분야를 공부하고자 하는 학생들, 직장인들에게 가장 기초가 되는 지식(Knowledge)입니다. 하지만, 데이터베이스를 공부하는 대학생, 경력 1~2년차 신입사원 등 아직 SQL 작성이 익숙하지 않은 사람들은 주어진 문제에 대해서 SQL로 풀어내는 게 어려울거라고 생각되는데요. 


이런 분들에게 SQL 문제를 풀어나가는 방식을 패턴화하여 공유함으로써 비슷한 문제에 대해 쉽게 대응할 수 있는 "재미삼아 풀어보는 SQL 작성 QUIZ"를 마련해보았습니다.

아래의 문제는 실제로 데이터분석 업무에서 발생한 상황을 모티브하여 작성하였습니다. 이 문제를 통해서 분석함수의 원리를 학습할 수 있습니다.

해당 업무는 사용자 별로 수집되는 이동여부를 이용하여 핸드폰 사용시간을 분석하는 업무입니다.










- 시간의 데이터는 0000, 0010 순으로 10분 간격으로 데이터가 생성됨

- 이동여부의 데이터 Y는 이동 중, N은 정지 중을 의미함

- 핸드폰 사용 시간은 초 단위 데이터임

1. 사용자ID 별, 일자 별로 생성한다.

2. 이동여부가 '정지 중'인 시간의 구간을 구한다.

3. 사용자ID, 일자, 시간이 중복 되었을 때에는 이동여부가 '정지 중'이면서 핸드폰 사용시간이 큰 데이터를 사용한다.

4. 시간의 흐름을 보고 누락된 데이터가 있을 경우에는 이동을 '정지 중'으로 판단하고, 핸드폰 사용 시간은 '0'으로 하여 계산한다.

5. '정지 중'인 구간이 30분 이상만 인정한다.

6. 구간의 사용자ID, 시작시간, 종료시간 별로 핸드폰 사용시간의 합을 구한다.



USER_ID

DD

TEN_MI

MOVE_YN

PH_USE_SEC

 

 

 100

 20160101 

 0900 

 Y 

200 

 

 

 100

 20160101 

 0910 

 N 

200 

 

 

 100

 20160101 

 0920 

 N

 

 100

 20160101 

 0930

 Y

200 

 

 

 100

 20160101 

 0940

 N

588 

 

 

 100

 20160101 

 0950

 Y

583 

 

 

 100

 20160101 

 1000

 Y

728 

 

 

 100

 20160101 

 1000

 N

492 

 

 

 100

 20160101 

 1010

 N

123 

 

 100

 20160101 

 1020

 N

423 

 

 100

 20160101 

 1030

 N

100 


1. 09:20은 누락된 데이터지만 업무규칙 4에 의해서 생성되었다. 하지만 업무규칙 5에 의해 다시 제외되었다.

2. 10:00은 중복되었지만 업무규칙 3에 의해서 MOVE-YN이 N인 데이터를 포함하여 구간으로 선정되었다.

3. 최종결과집합


 

USER_ID

DD

STR_TM

END_TM

PH_USE_SEC

 

 

 100

 20160101 

 1000 

 1030 

1138 

 


필요한 스크립트는 TEXT파일로 함께 첨부합니다:) 문제의 답은 2주 뒤에 공개하겠습니다. 재미있게 풀어보세요!

SQLQUIZ01.txt