inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1-5. 데이터 PIVOT하기 : MAX(IF( ~ )) 활용

1-5 예제용 학생 점수 데이터 테이블 생성 시 오류 발생

해결된 질문

129

전성배

작성한 질문수 6

0

안녕하세요 카일님

1-5 학습 중 PIVOT 예제용 TABLE을 만들어 보려고 하였습니다.

결론부터 말씀드리면 TABLE 생성에 성공하였어요.

다만 궁금한 것은 제가 겪은 오류에 대한 해석이 올바른 것인지 확인 받고 싶어서 질문 드립니다.

1-4 강에 있던 array_exercise 생성 구문을 참고하여 아래와 같은 구문으로 실행하였더니 생성되지 않았습니다.

가장 안쪽의 select 부터 실행하면서 찾아보니 최하단의 UNION ALL이 원인이었더라구요.

UNION ALL 은 아래에도 추가 ROW를 입력해야 할 때, 한 행으로 밀어넣는 명령어이므로, 마지막 행 다음에는 넣지 말아야 한다. 넣을 경우 그 뒤에 추가적인 데이터의 입력을 요구하나, 데이터가 없으므로 실행이 되지 않는 것이다.

라고 이해했는데, 맞게 이해했을까요?

CREATE OR REPLACE TABLE `advanced.grade` AS
SELECT student, grades
  FROM (
    SELECT
      'A' AS student,
      ARRAY<STRUCT<subject STRING, score INT64>>[
        STRUCT('수학', 80),
        STRUCT('영어', 90),
        STRUCT('과학', 85)
      ] AS grades
    UNION ALL
    SELECT
      'B',
      ARRAY<STRUCT<subject STRING, score INT64>>[
        STRUCT('수학', 75),
        STRUCT('영어', 95),
        STRUCT('과학', 80)
      ]
    UNION ALL 
  )

sql Google-Analytics firebase google-sheets bigquery

답변 1

1

카일스쿨

성배님 안녕하세요

UNION ALL 은 위에 있는 내용과 아래의 쿼리의 결과를 합치는 문법이라 생각하시면 됩니다. 그래서 아래에 UNION ALL만 있으면 그 아래 내용이 없어서 오류가 발생하게 됩니다..!

 

SELECT 문 # A
UNION ALL
SELECT 문 # B

 

위 경우에 A의 결과 + B의 결과를 합친다는 의미입니다. 맨 아래에 UNION ALL을 쓴다면 또 무언가를 추가하겠다는 의미로 SQL 엔진이 이해합니다. 그런데 뒤에 무언가가 나오지 않아서 오류를 발생시킵니다

 

말씀해주신 "마지막 행 다음에는 넣지 말아야 한다. 넣을 경우 그 뒤에 추가적인 데이터의 입력을 요구하나, 데이터가 없으므로 실행이 되지 않는 것이다"도 비슷한 어감이지만, 제가 설명한다면 "UNION ALL의 문법을 지키지 않아서 발생한 오류"라고 말씀드릴 것 같네요. UNION ALL의 문법이 A UNION ALL B의 형태를 띈다고 생각해주시면 좋을 것 같네요

1

전성배

자세히 알려주셔서 감사합니다!!

3-13 리텐션 과제 제출합니다

0

14

2

app logs 데이터로 쿼리 연습

0

39

2

[과제] 연습문제 쿼리 작성했습니다!

0

31

2

6-1. 강의 최종 과제 제출합니다.

0

59

3

3-13 리텐션 과제 제출합니다

0

119

3

3-13. 리텐션 연습과제 제출합니다.

0

92

4

최종 과제 제출

0

78

3

Weekly Retention 과제 작성하였습니다.

0

68

2

3-10 강의 14분경 코호트 해석 질문드립니다.

0

78

2

Weekly 및 Monthly Retention 과제 제출합니다.

0

75

2

[과제] 퍼널 쿼리 PIVOT 테이블 작성

0

78

2

최종 과제 제출

0

146

3

BigQuery 활용편 18강 질문있습니다!

0

111

1

리텐션 공부하다가 궁금한게 생겨 질문드립니다

0

116

2

안녕하세요 강사님 코호트 쿼리 공부하다가 의문점이 생겨서 문의드립니다

0

110

2

biquery 테이블 생성 오류 이슈

0

110

2

동일하게 쿼리를 작성했는데 화면과 다른 값이 나옵니다

0

114

2

[과제] 퍼널 PIVOT 테이블 작성하기

0

113

2

array 등

0

95

2

N day 리텐션 쿼리 관련 질문

0

100

2

이동평균 계산 시 order by 기본값은 뭔가요?

0

99

2

윈도우 연습문제 1번 질문

0

94

1

user_id에 NULL이 나오는데 정상인가요?

0

111

2

3-13 리텐션 과제 제출

0

153

2