MySQL에서 중앙값 계산
이 튜토리얼에서는 MySQL에서 일련의 숫자의 중앙값을 효율적으로 계산하는 몇 가지 방법을 보여줍니다.
MySQL에는 일련의 숫자의 통계적 중앙값을 계산하는 내장 함수가 없습니다. 그렇기 때문에 중앙값을 계산해야하는 경우 사용자 지정 코드를 사용해야합니다.
중앙값은 분석중인 일련의 숫자 중 중간 요소입니다. 큰 샘플로 작업하고 효율적으로 수행하지 않으면이 요소를 감지하는 과정이 느릴 수 있습니다. 일부 상황에서는 프로세스가 까다로울 수도 있습니다. 예를 들어, 일부 알고리즘은 홀수 세트에서는 작동하지만 짝수 세트에서는 작동하지 않거나 그 반대의 경우도 마찬가지입니다.
MySQL에서 중앙값을 계산하는 가장 정확한 방법
float 유형의MyNumber
열이있는dataset
테이블이 있고MyNumber
데이터 계열의 중앙값을 가져와야한다고 가정하십시오. 모든 경우에 작동하는 알고리즘으로 중앙값을 계산하는 가장 정확한 방법은 다음 스크립트를 사용하는 것입니다.
SELECT AVG(mid_vals) AS 'median' FROM (
SELECT tab1.MyNumber AS 'mid_vals' FROM
(
SELECT @row:=@row+1 AS 'row', a.MyNumber
FROM dataset AS a, (SELECT @row:=0) AS r
ORDER BY a.MyNumber
) AS tab1,
(
SELECT COUNT(*) as 'count'
FROM dataset x
) AS tab2
WHERE tab1.row >= tab2.count/2 and tab1.row <= ((tab2.count/2) +1)) AS tab3;
테이블의 행 수가 많으면MyNumber
열에 인덱스가 필요하며 해당 인덱스가 문이 제대로 수행되도록 필터링 및 정렬에 사용되는지 확인합니다.
UDF (사용자 정의 함수)를 사용하여 MySQL에 기능 추가
수학 및 통계 함수는 매우 일반적이며 중앙값과 같은 함수를 사용해야하는 경우 바퀴를 재발 명해서는 안됩니다. 따라서 작업을 수행하는 잘 테스트 된 사용자 정의 함수를 얻을 수 있습니다.
이 사이트에는 MySQL에 통계 기능을 추가하는 데 무료로 사용할 수있는 UDF가 많이 있습니다. 이러한 UDF 중 하나는 median
함수입니다. 하나의 입력 매개 변수와 하나의 출력 매개 변수가 있으며 둘 다 REAL
유형입니다. 입력 매개 변수는 중앙값을 계산하기위한 숫자 집합이 포함 된 열이고 출력 매개 변수는 계산 된 중앙값입니다.
소스 코드를 다운로드 한 후 다음 명령을 사용하여 UDF를 추가합니다.
CREATE AGGREGATE FUNCTION median RETURNS REAL SONAME 'udf_median.so';
그런 다음 다음과 같이 SELECT
문 내에서 함수를 사용할 수 있습니다.
SELECT MEDIAN(MyNumber) FROM dataset