Search

Tip들

중위수구하기

일반적으로 mysql에는 집계함수로 MAX(), MIN(), AVG() 는 있지만 MEDIAN() 은 없다는 아쉬움이 있다.
→ 어떻게 구현해낼까?
set 으로 테이블의 행의 index를 부여해주는 새로운 컬럼을 만들어낸다.
ex) 예를 들어, 특정 칼럼의 중앙값을 출력해야된다고 해보자.
CEIL() : 소수점을 무조건 올려서 정수로 만들어줌
FLOOR() : 무조건 내려서 정수로 만들어줌
SET @rowIndex = -1; SELECT ROUND(AVG(lat_n),4) AS Median FROM (SELECT @rowIndex:=@rowIndex+1 AS RowNumber ,lat_n FROM station ORDER BY lat_n) sub WHERE RowNumber IN (FLOOR(@rowIndex / 2), CEIL(@rowIndex / 2))
SQL
복사