>  기사  >  데이터 베이스  >  상위 n개 최대값을 선택하기 위해 MySQL에서 순위를 시뮬레이션하는 방법은 무엇입니까?

상위 n개 최대값을 선택하기 위해 MySQL에서 순위를 시뮬레이션하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-10 15:40:03758검색

How to Simulate Rank in MySQL to Select Top n Maximum Values?

MySQL로 순위를 시뮬레이션하여 상위 n개 최대값 선택

테이블에서 상위 n개 최대값을 선택하는 것은 MySQL에서 특히 어려울 수 있습니다. 원하는 n이 테이블의 개별 그룹 수보다 큰 경우

근사 통합 쿼리를 사용한 상위 n 최대값

n=2인 경우 통합 쿼리를 사용하여 원하는 출력을 대략적으로 계산할 수 있습니다.

SELECT max(column1) m
FROM table t
GROUP BY column2
UNION
SELECT max(column1) m
FROM table t
WHERE column1 NOT IN (SELECT max(column1) WHERE column2 = t.column2)

이 쿼리는 먼저 다음의 최대값을 찾습니다. 그런 다음 아직 어떤 그룹의 최대값도 아닌 모든 값 중 두 번째 최대값을 찾습니다.

순위 활용 시뮬레이션

모든 n에 대해 다른 곳에서 설명한 기술을 사용하여 파티션에 대한 순위를 시뮬레이션할 수 있습니다. 그러한 접근 방식 중 하나는 각 그룹의 n번째 최대값을 반환하는 하위 쿼리를 사용하는 것입니다.

SELECT t.*
FROM
   (SELECT grouper,
          (SELECT val
           FROM table li
           WHERE li.grouper = dlo.grouper
           ORDER BY
                 li.grouper, li.val DESC
           LIMIT 2,1) AS mid
   FROM
      (
      SELECT DISTINCT grouper
      FROM table
      ) dlo
   ) lo, table t
WHERE t.grouper = lo.grouper
      AND t.val > lo.mid

이 쿼리에서 LIMIT 2,1은 n 값을 2로 설정합니다. 그룹화 열을 그룹화 열로 바꿉니다. 특정 시나리오에서는 name 및 val을 값 열 이름으로 바꿉니다.

위 내용은 상위 n개 최대값을 선택하기 위해 MySQL에서 순위를 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.