>  Q&A  >  본문

MySQL에서 중앙값을 계산하는 쉬운 방법

<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>
P粉960525583P粉960525583447일 전612

모든 응답(2)나는 대답할 것이다

  • P粉738248522

    P粉7382485222023-08-21 16:20:51

    방금 온라인 댓글에서 또 다른 답변을 찾았습니다.

    열의 색인이 제대로 작성되었는지, 색인이 필터링 및 정렬에 사용되는지 확인하세요. 실행 계획을 통해 검증합니다.

    으아악

    "중앙값" 행 번호를 계산합니다. 사용 가능: median_row = floor(count / 2).

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

    으아악

    원하는 값이 반환되어야 합니다.

    회신하다
    0
  • P粉195200437

    P粉1952004372023-08-21 13:39:20

    MariaDB/MySQL에서:

    으아악

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

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

    으아악

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

    회신하다
    0
  • 취소회신하다