작성
·
162
2
우선 제가 인프런에서 들은 강의 중에 제일 완주 빨리했던것같아요! 너무 감사해요
그리고, Recommendation system도 들으려고 합니다^^ 팔로우업 질문이 있는데 답변해주시면 감사하겠습니다.
1. 중급듣고 초급도 오늘 등록했어요! 초급에서 혹시 제가 놓친게 있을까봐요. 그리고 고급도 완주하려하는데, 고급이 제가 Data analyst 포지션 인터뷰에 도움이 될까요? 아니면 초급중급이면 괜찮은지 궁금합니다.
2. 선생님께서 추천해주신 싸이트 https://programmers.co.kr/
에서 GROUP BY 섹션 연습문제를 풀다가 질문이 생겨서요!
ANIMAL_OUTS
테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS
테이블 구조는 다음과 같으며, ANIMAL_ID
, ANIMAL_TYPE
, DATETIME
, NAME
, SEX_UPON_OUTCOME
는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME | TYPE | NULLABLE |
---|---|---|
ANIMAL_ID | VARCHAR(N) | FALSE |
ANIMAL_TYPE | VARCHAR(N) | FALSE |
DATETIME | DATETIME | FALSE |
NAME | VARCHAR(N) | TRUE |
SEX_UPON_OUTCOME | VARCHAR(N) | FALSE |
보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다.
SQL문을 실행하면 다음과 같이 나와야 합니다.
HOUR | COUNT |
---|---|
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
6 | 0 |
7 | 3 |
8 | 1 |
9 | 1 |
10 | 2 |
11 | 13 |
12 | 10 |
13 | 14 |
14 | 9 |
15 | 7 |
16 | 10 |
17 | 12 |
18 | 16 |
19 | 2 |
20 | 0 |
21 | 0 |
22 | 0 |
23 | 0 |
제가 푼 방법은 아래와 같습니다(답을 맞추지못했어요). 근데 다른 사람들 푼 문제를 보니 SET과 LPAD, IFNULL을 이용하신 분들이 많더라구요.. 이게 복잡한 문제인지 궁금합니다. 혹시 간략하게 알려주실 수 있으면 너무 감사하겠습니다. 항상응원할게요!
SELECT HOUR(DATETIME) AS HOUR, COUNT(ANIMAL_ID) AS COUNT
FROM ANIMAL_OUTS
WHERE HOUR(DATETIME) BETWEEN 0 AND 23
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)
답변 1
1
안녕하세요 Yeji Lee님, 질문주셔서 감사합니다 :)
1. 중급반을 수료하신 것을 축하드립니다. 복습까지 하시다니 열정이 대단하세요. 저는 우선 DA 직무를 희망하신다면 고급반까지는 수강을 하시기를 권장드립니다.
현업 분석가로서 업무를 진행하려면 SQL은 필수인데요. 사실 SQL이 필수라는 말에는 (어떤 요구사항이든지 데이터를 알맞게 추출, 가공 가능할)이라는 조건이 숨어있습니다.
현업 분석가의 입장에서 말씀을 드리면 고급반의 서브쿼리나 윈도우 펑션 정도는 직접 사용할 수 있거나 최소한 알고는 있어야 SQL 스킬이 갖춰졌구나 생각할 수 있을 것 같아요. 실제로 저도 업무에서 굉장히 많이 사용하고 있는 것들이기도 하구요. 커리큘럼 한번 둘러보시고 결정해보세요.
제 의견은 여유가 되신다면 고급반까지 들어보시는 게 좋다 입니다.
2. 해당 문제는 문제 자체를 해석하고 이해하는 것은 어렵지 않은데 결과를 만들어내기가 조금 까다로운 문제입니다.
질문자님께서 작성해주신 쿼리로는 있는 시간대별로 입양기록이 있는 데이터들만 카운트다 되는데요. 예상 결과표에는 데이터가 없는 시간대(ex 0시에 0마리)에도 카운트가 되고 있는 점이 다르죠. 이 부분이 쿼리를 짜는데 조금 어려운 지점이됩니다.
즉 '해당시간에 입양간 데이터가 없을 경우'를 생각해서 임의로 해당 결과들을 따로 만들어줘야 하는 셈입니다. 때문에 질문자님께서 의아하게 생각하셨던 복잡한 쿼리들이 만들어지는 거구요. 이제 왜 그런 쿼리들로 정답을 맞추는지 이해가 좀 되셨나요?
더 궁금한 점이 있으시면 언제든지 질문 주세요.
감사합니다.
데이터리안 팀
이보민 드림