MySQL을 사용하여 중앙값을 계산하는 간단한 방법
P粉720716934
P粉720716934 2023-08-29 11:47:07
0
2
922
<p>MySQL을 사용하여 중앙값을 계산하는 가장 간단한(너무 느리지 않기를 바라는) 방법은 무엇입니까? 평균을 찾기 위해 <code>AVG(x)</code>를 사용하고 있지만 중앙값을 계산하는 쉬운 방법을 찾는 데 어려움을 겪고 있습니다. 지금은 모든 행을 PHP로 반환하고 정렬한 다음 중간 행을 선택하고 있지만 단일 MySQL 쿼리에서 이를 수행할 수 있는 쉬운 방법이 있을 것입니다. </p> <p>예제 데이터:</p> <pre class="brush:php;toolbar:false;">id 값 | -------- 1 4 2 7 3 2 4 2 5 9 6 8 7 3</pre> <p>Sort <code>val</code>는 <code>2 2 3 4 7 8 9</code>를 제공하므로 중앙값은 <code>4</code>이어야 하며 <code> ;SELECT AVG(값) == <코드>5. </p>
P粉720716934
P粉720716934

모든 응답(2)
P粉041881924

방금 댓글에서 온라인에서 다른 답변을 찾았습니다 一>:

열의 색인이 잘 작성되어 있고 색인이 필터링 및 정렬에 사용되는지 확인하세요. 설명 계획으로 유효성을 검사합니다.

으아악

"중앙값" 행 번호를 계산합니다. 어쩌면 다음을 사용할 수도 있습니다: median_row = Floor(count / 2).

그런 다음 목록에서 선택하세요.

으아악

원하는 값이 포함된 행이 반환되어야 합니다.

P粉041758700

MariaDB/MySQL:

으아악

Steve Cohen은 첫 번째 패스 이후 @rownum에 총 행 수가 포함된다는 점을 지적했습니다. 이는 중앙값을 결정하는 데 사용될 수 있으므로 두 번째 패스나 연결이 필요하지 않습니다.

또한 AVG(dd.val)dd.row_number IN(...)은 레코드 수가 짝수일 때 중앙값을 올바르게 생성하는 데 사용됩니다. 추론:

으아악

마지막으로 MariaDB 10.3.3+에는 MEDIAN 기능이 포함되어 있습니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿