MariaDB Median & Percentile

MariaDB에는 median window function이 있다. 해당 속성값 별로 중위값을 뽑기 위해 사용하는 함수인데, window function의 특성상 모든 row에 대해 median을 구하는 특징이 있다. PARTITION BY column_name으로 나눠진 그룹 내에서 중위값을 구해주는 느낌인데, 자세한 예제는 위 링크를 참조하면 대충 감이 올 듯.

문서에 쓰여있기로, median은 percentile_cont의 specific case라고 소개하고 있다. 그래서 percentile_cont를 찾아봤다. 중위값이라는 것은 distinct set의 원소 갯수가 홀수일 때만 정확하게 구할 수 있기 때문에, distinct set에 3, 5가 들어 있는 경우에는 4를 return하게 된다. 만약에 실제로 데이터베이스 존재하는 값을 반환받고 싶으면 percentile_disc를 참조하자. 3, 5의 경우에 3를 반환 해준다.

나는 percentile_cont를 이용하여 중위값 외에도 1q, 3q를 구하고 싶었기 때문에 다음 SQL으로 통계값을 냈다.

  • ORDER BY에 정렬순서를 넣어줘야한다.
  • LIMIT를 넣은 이유는,  window function의 특징인 PARTITION BY를 넣지 않았기 때문에 반환되는 모든 행의 값이 동일하기 때문이다.
  • first_quarter, median, third_quarter를 한 번에 돌려야 여러 번 정렬하지 않는다.

Leave a Reply