문제

다음 테스트 데이터를로드했습니다.

name,   age,gender
"John", 33,m
"Sam",  33,m
"Julie",33,f
"Jimbo",, m
.

스키마 : name:STRING,age:INTEGER,gender:STRING 및 i Jimbo 행은 BigQuery 브라우저 도구> MyDataset> 세부 정보> 미리보기 섹션의 "Age"열에 null를 표시합니다.

이 쿼리를 실행할 때 :

SELECT AVG(age) FROM [peterprivatedata.testpeople]
.

24.75가 잘못되었습니다. AVG에 대한 문서는 "NULL 값이있는 행을 문서화하기 때문에 33.계산에는 포함되지 않습니다. "

나는 뭔가 잘못하고 있거나 이것이 알려진 버그인가?(공개 문제가 있는지 확인하는지 여부를 알지 못합니다).이게 가장 간단한 해결 방법은 무엇입니까?

도움이 되었습니까?

해결책

이것은 가져 오기에서 0으로 in null 숫자 값을 0으로 묶는 알려진 버그입니다.우리는 현재 수정을 위해 일하고 있습니다.그러나 do 은 정의되지 않은 것으로 나타나지 않은 것으로 나타나지 않으므로 (다양한 이유로 null과는 다르다)이므로 is_explicity_defined를 확인할 수 있습니다.예 :

SELECT sum(if(is_explicitly_defined(numeric_field), numeric_field, 0)) / 
       sum(if(is_explicitly_defined(numeric_field), 1, 0)) 
    AS my_avg FROM your_table
.

번갈아, 다른 열을 사용하여 is_null을 나타낼 수 있습니다.그런 다음 쿼리는 다음과 같습니다.

    SELECT sum(if(numeric_field_is_null, 0, numeric_field)) / 
       sum(if(numeric_field_is_null, 0, 1)) 
    AS my_avg FROM your_table
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top