본문 바로가기
분석/데이터분석

[SQL] 기하평균 을 구해보자

by 여우요원 2022. 7. 26.

이전 포스팅에서는 기하평균의 의미와 함께 엑셀(Excel)을 사용하여 데이터를 검증해보았다.

https://walkingfox.tistory.com/173

 

곱의 평균 (기하평균)

위의 차트는 어느 신문기사에서 가져온 경제성장률에 대한 내용이다. 2009년부터 2020년까지 12년동안 경제 성장률이 변화무쌍하다. 그럼 위 12년동안 평균 경제 성장률은 어떻지? 라는 물음에 답

walkingfox.tistory.com

 

이번 포스트에서는 기하평균을 SQL 에서 구하는 방법을 살펴보도록 한다.

 

테이블에 아래와 같은 id, rate 이라는 두 컬럼으로 구성된 list 라는 테이블이 있다고 가정을 한다.

 

여기서 산술평균은 avg 라는 함수를 사용하여 쉽게 구할 수 있다.

기하평균의 경우 athena 또는 presto 의 경우처럼 DB 차원에서 함수가 제공되는 경우는 geometric_mean 이라는 함수로 쉽게 구할 수 있다.

하지만 mysql 의 경우처럼 함수가 제공되지 않는 경우는

exp( sum(ln(column_name)) / count(column_name) )

 같이,  ln 로그함수, sum 합계함수, exp 지수함수를 함께 사용하여 구할 수 있다. 

아래의 예를 보면 같은 값이 계산되고 있음을 알 수 있다.

 

마지막으로는 윈도우함수(Windows Function)을 이용하여 각 단계별로, 산술평균, 기하평균 그리고 mysql 에서의 기하평균을 구해보자.