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

jenna님의 프로필 이미지
jenna

작성한 질문수

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

4-3. BigQuery의 절차적 언어(Precodural Language) : DECLARE, SET, EXECUTE, IMMEDIATE

4-3. while 문 쿼리

해결된 질문

작성

·

31

0

예제 쿼리 결과에 대해 궁금한 점이 있어 질문 드립니다

  • 쿼리 결과 i는 11이 왜 나왔는지 궁금합니다.
    i 변수는 1,2,3,4,5,6,7,8,9,10,11 있는데, 쿼리 결과에서 MAX함수를 사용하지 않았는데도 11이 나온 이유는 뭔가요?

  • 쿼리 결과 sum_value는 25가 왜 나왔는지 궁금합니다.
    sum_value 변수는 1,3,5,7,9 (홀수) 있는데, 쿼리 결과에서 sum함수를 사용하지 않았는데도 25가 나온 이유는 뭔가요?

답변 1

0

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

안녕하세요.

i가 11이 나온 이유

  • WHILE문에서 i는 1부터 값이 하나씩 추가합니다. (SET i = i + 1)

  • 그래서 i가 10일 때까지 WHILE i <= max_value가 TRUE가 되어 연산이 진행됩니다. 그리고 나서 마지막에 SET i = i +1로 i가 11이 됩니다

  • WHILE i <= max_value에서 i는 11이 되고, max_value는 10입니다. 그래서 False를 반환해서 IF MOD(i, 2)를 실행하지 않고 바로 끝냅니다.

  • 이 끝난 상태에서 i를 출력하라고 해서 i가 11이 됩니다

     

 

쿼리 결과 sum_value는 25가 왜 나왔는지 궁금합니다.

  • SET sum_value = sum_value + i를 사용해서 홀수일 때마다 값을 더하고 있었습니다

  • i가 1부터 11까지 실행되면서 홀수일 때마다 값을 더해서 마지막에 SELECT 할 때 25가 나왔습니다

 

정리하면

  • 둘 다 WHILE 문 안에 로직에 의해 i가 11까지 나왔고, sum_value가 25가 나왔습니다.

  • WHILE문이 모두 실행되고 그 후에 쿼리를 해서 모두 실행이 된 시점의 i, max_value를 추출하게 되었습니다

jenna님의 프로필 이미지
jenna

작성한 질문수

질문하기