MySQL에서 중앙값을 계산하는 쉬운 방법
P粉960525583
2023-08-20 18:05:23
<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><code>val</code>로 정렬하면 <code>2 2 3 4 7 8 9</code>가 나오므로 중앙값은 <code>4</code>가 되어야 합니다. ;code>SELECT AVG(val)는 5
와 같습니다. </p>
방금 온라인 댓글에서 또 다른 답변을 찾았습니다.
열의 색인이 제대로 작성되었는지, 색인이 필터링 및 정렬에 사용되는지 확인하세요. 실행 계획을 통해 검증합니다.
으아악"중앙값" 행 번호를 계산합니다. 사용 가능:
median_row = floor(count / 2)
.그런 다음 목록에서 선택하세요.
으아악원하는 값이 반환되어야 합니다.
MariaDB/MySQL에서:
으아악Steve Cohen은 첫 번째 패스 이후 @rownum에 총 행 수가 포함된다는 점을 지적했습니다. 이는 중앙값을 결정하는 데 사용될 수 있으므로 두 번째 패스나 조인이 필요하지 않습니다.
또한
으아악AVG(dd.val)
和dd.row_number IN(...)
는 레코드 수가 짝수일 때 중앙값을 올바르게 계산하는 데 사용됩니다. 추론은 다음과 같습니다:마지막으로 MariaDB 10.3.3+에는 MEDIAN 기능이 포함되어 있습니다