MySQL에서 특정 값이 상위 몇 퍼센트에 속하는지 알아내려면, 전체 데이터의 순위를 매기고 해당 값이 차지하는 순위를 퍼센트로 변환하면 됩니다. 이를 위해서 RANK() 또는 PERCENT_RANK() 함수를 사용할 수 있습니다.
아래 예시에서는 테이블의 값이 상위 몇 퍼센트에 속하는지 계산하는 방법을 보여줍니다. 예를 들어, scores라는 테이블에서 각 score가 상위 몇 퍼센트에 있는지 알고 싶은 경우:
SELECT
score,
RANK() OVER (ORDER BY score DESC) AS rank,
(RANK() OVER (ORDER BY score DESC) / (SELECT COUNT(*) FROM scores) * 100) AS percentile
FROM
scores;
위 쿼리는 각 score의 순위를 계산하고, 그 순위를 전체 데이터의 개수로 나누어 상위 몇 퍼센트인지 구하는 방식입니다.
PERCENT_RANK()는 0에서 1 사이의 값을 반환하며, 해당 값이 속한 비율을 나타냅니다. 이를 100으로 곱하면 퍼센트로 나타낼 수 있습니다.
SELECT
score,
PERCENT_RANK() OVER (ORDER BY score DESC) * 100 AS percentile
FROM
scores;
이 쿼리는 자동으로 상위 몇 퍼센트인지 구해줍니다.
요약
RANK()를 사용하면 전체 순위를 기반으로 퍼센트를 수동으로 계산할 수 있습니다.
PERCENT_RANK()를 사용하면 퍼센트를 바로 계산할 수 있습니다.
어떤 방법이든 데이터의 특성에 맞게 사용할 수 있습니다.