날짜 당 약 1000 개의 ID 행이있는 날짜, id 및 값이 포함 된 테이블이 있습니다. 각 행의 백분위 수를 날짜별로 계산해야합니다. 하나의 날짜에 대해 백분위 수 순위에 다음 코드를 사용하고 있지만, 10 년이 넘는 일별 데이터는 날짜별로 실행하는 것이 매우 비효율적입니다. MySQL에서 공식화 될 수 있어야하지만 작동하게 만들지 못했습니다.그룹 별 MySQL 백분위 순위
Date ID Value
date1 01 -7.2
date1 02 0.6
date2 01 1.2
date2 02 3.8
SELECT c.id, c.value, ROUND((
(@rank - rank)/@rank) *100, 2) AS rank
FROM (
SELECT * , @prev := @curr , @curr := a.value,
@nxtRnk := @nxtRnk + 1,
@rank := IF(@prev = @curr , @rank , @nxtRnk) AS rank
FROM (
SELECT id, value
FROM temp
WHERE date = '2013-06-28'
) AS a, (
SELECT @curr := NULL , @prev := NULL , @rank :=0, @nxtRnk :=0
) AS b
ORDER BY value DESC
) AS c
그래서 기본적으로 나는 DISTINCT (날짜)를 선택하려면, 다음 각 날짜를 표 2에 결과를 작성하는 표 2 (...)에 삽입 덧붙일되는 SELECT, 위의를 수행합니다. 어떤 도움
감사합니다, 휴