source

MySQL/MariaDB의 PERCENTILE_CONT 대체 방법

gigabyte 2022. 10. 19. 21:07
반응형

MySQL/MariaDB의 PERCENTILE_CONT 대체 방법

여기에 이미지 설명 입력

이 테이블에서 percentile_cont를 계산하고 싶습니다.Oracle에서 쿼리는 다음과 같습니다.

SELECT PERCENTILE_CONT(0.05) FROM sometable;

MariaDB/MySQL의 대체 기능은 무엇입니까?

MariaDB 10.3.3소개했다PERCENTILE_CONT,PERCENTILE_DISC,그리고.MEDIAN창 기능

백분위수_계속

PERCENTILE_CONT()는 윈도우 함수로도 사용할 수 있는 순서 집합 집합 함수입니다.정렬 순서에서 지정된 분수에 해당하는 값을 반환합니다.필요한 경우 인접한 입력 항목 간에 보간합니다.

SELECT name, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY star_rating) 
        OVER (PARTITION BY name) AS pc 
FROM book_rating;

MariaDB 10.3.3은 윈도 기능의 형태로 이러한 기능을 지원하지만(Lukasz Szozda의 답변 참조), MySQL 8에서도 윈도 기능을 사용하여 에뮬레이트할 수 있습니다.

SELECT DISTINCT first_value(matrix_value) OVER (
  ORDER BY CASE WHEN p <= 0.05 THEN p END DESC /* NULLS LAST */
) x,
FROM (
  SELECT
    matrix_value,
    percent_rank() OVER (ORDER BY matrix_value) p,
  FROM some_table
) t;

는 여기에 이것에 대해 좀 더 자세히 블로그에 올렸다.

MariaDB 또는 MySQL에는 내장 함수가 없기 때문에 SQL 수준에서 해결해야 합니다(또는 C로 작성된 사용자 정의 함수를 추가하여...).

SQL 솔루션 개발에 도움이 될 수 있습니다.

http://rpbouman.blogspot.de/2008/07/calculating-nth-percentile-in-mysql.html

마리아DB 10.2에는 윈도우 기능이 있습니다.

MySQL/이전 MariaDB의 경우 단일 값 집합에 대해 N번째 백분위수만 사용한다고 가정합니다.

이는 앱 코드에 가장 적합하지만 저장된 루틴에 내장될 수 있습니다.

  1. 행의 총수를 카운트합니다.SELECT COUNT(*) FROM tbl.
  2. 구축 및 실행SELECT와 함께LIMIT n,1어디에n는 백분위수 곱하기 카운트로 계산되어 쿼리에 입력됩니다.

두 값 사이에 보간해야 하는 경우 더 복잡해집니다.그것도 필요하세요?

언급URL : https://stackoverflow.com/questions/37804511/alternative-for-percentile-cont-in-mysql-mariadb

반응형