집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법
위 질문에 대해 이번에 사용한 함수를 사용하지 않을 경우, 즉, MySQL에서 이 글의 함수를 사용할 수 없는 경우 다음과 같은 구문 로직을 사용하여 대체할 수 있습니다. 그것.
SELECT t1.Score as Score, ( SELECT COUNT(DISTINCT t2.Score) FROM Scores t2 WHERE t2.Score >= t1.Score ) AS `Rank` FROM Scores t1 ORDER BY t1.Score DESC
기능: 지정된 조건을 알아낸 후 순위를 매깁니다. 조건이 동일하면 순위가 동일하며 순위가 연속되지 않습니다.
이 기능은 학생 순위에 사용할 수 있습니다. 성적이 같은 두 학생이 동점을 이루고 다음 학생이 자리를 비우는 경우입니다. 즉, 1 1 3 4 5 5 7
SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student
기능: 지정된 조건을 찾아 순위를 매깁니다. 동일하며 순위는 불연속적입니다.
설명: Rank() 오버와 동일한 효과가 있습니다. 순위에 대한density_rank()가 촘촘하고 연속적이라는 점이 다릅니다. 이 기능을 사용하여 학생의 순위를 결정합니다. 동점인 경우에는 두 명의 학생이 같은 순위로 동점을 이루게 되며, 다음 순위에 따라 다음 순위의 학생이 결정됩니다. 즉, 1 1 2 3 4 5 5 6
SELECT id, name, score, dense_rank() over(ORDER BY score DESC) AS 'rank' FROM student
기능: 지정된 조건을 찾아 순위를 매기고, 조건이 같으면 순위가 달라지며, 순위는 불연속적입니다.
쿼리된 값이 동일하더라도 병렬 여부를 고려하지 않고 연속적으로 정렬하는 기능입니다. 즉, 1 2 3 4 5 6
SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student
함수의 비즈니스 로직은 복잡할 수 있으며 ORDER BY에 국한되지 않고 추가될 수도 있습니다.
### 分班级排名 SELECT id, name, score, class, row_number() over(PARTITION BY class ORDER BY score DESC) AS 'rank' FROM student
위 내용은 MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!