인프런 커뮤니티 질문&답변

박갑순님님의 프로필 이미지

작성한 질문수

초보자를 위한 BigQuery(SQL) 입문

4-7. 조건문 연습 문제

4-7. 조건문 연습 문제 5번에 관한 질문

해결된 질문

24.05.26 11:54 작성

·

141

0

안녕하세요.

조건문 연습 문제 5번의 선생님께서 쓰신 정답에 관해 질문입니다.

select 안에, 포획 날짜를 표시하기 위해 원래 basic.trainer_pokemon 안에 존재하는 catch_datetime을 쓰셨는데, Asia/Seoul 시간대로 변경되지 않은 상태를 그대로 쓰신 이유가 있을까요?

SELECT
  id,
  trainer_id,
  pokemon_id,
  catch_datetime,
  IF (DATE(catch_datetime, "Asia/Seoul") > "2023-01-01", "Recent", "Old") as recent_or_old
FROM
  `basic.trainer_pokemon`

 

if 함수 내에서 수정한 날짜를 보여주기 위해, 똑같이 수정한 날짜를 썼는데, 문제 없을까요?

SELECT
  id,
  trainer_id,
  pokemon_id,
  DATE(catch_datetime, "Asia/Seoul") as corrected_catch_date,
  IF (DATE(catch_datetime, "Asia/Seoul") > "2023-01-01", "Recent", "Old") as recent_or_old
FROM
  `basic.trainer_pokemon`

 

미리 감사합니다.

 

답변 2

0

박갑순님님의 프로필 이미지
박갑순님
질문자

2024. 05. 27. 11:20

답변 감사합니다!

0

카일스쿨님의 프로필 이미지
카일스쿨
지식공유자

2024. 05. 26. 12:19

안녕하세요!

해당 문제에서 IF문을 통해 2023-01-01 기준으로 recent, old로 만들려고 한 것이고 그 이후에 데이터를 어떻게 사용하는지에 따라 어떻게 접근할지가 달라질 것 같네요.

5번 문제는 IF 문 안에 DATE 함수를 넣을 수 있고, DATE 함수 결과를 받아 조건문을 사용하는 것을 알려주기 위해 문제를 만들었습니다. 만약 문제에서 추가적으로 catch_datetime의 조건에 따른 분기가 존재한다면 변경하는 것도 좋은 선택일 것 같네요.

결론적으로 해당 문제에서는 크게 중요하지 않은 부분이지만, catch_datetime을 사용해서 WHERE 절에서 조건을 건다거나 한다면 DATETIME(catch_datetime, 'Asia/Seoul')로 해서 바꾸는 것이 더 좋을수도 있고 지금 작성해주신 쿼리도 문제가 되지 않습니다. 문제의 의도는 "조건문에 익숙해지는 것"이였다고 생각해주시면 좋을 것 같습니다.

쿼리가 이게 맞을까요? 저게 맞을까요? 라는 질문에 대한 생각을 추가적으로 말씀드리면 목적에 맞고, 논리적으로 타당하다면 다양한 방식의 쿼리가 나올 수 있습니다. 쿼리의 결과 데이터를 어떻게 활용하는가?라는 관점으로 생각해보셔도 좋을 것 같네요