>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법

MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법

PHPz
PHPz앞으로
2023-05-26 19:55:291648검색

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

rank() over (비즈니스 로직)

기능: 지정된 조건을 알아낸 후 순위를 매깁니다. 조건이 동일하면 순위가 동일하며 순위가 연속되지 않습니다.

이 기능은 학생 순위에 사용할 수 있습니다. 성적이 같은 두 학생이 동점을 이루고 다음 학생이 자리를 비우는 경우입니다. 즉, 1 1 3 4 5 5 7

SELECT id, name, score, rank() over(ORDER BY score DESC) AS 'rank' FROM student

MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법

dense_rank() over (비즈니스 로직)

기능: 지정된 조건을 찾아 순위를 매깁니다. 동일하며 순위는 불연속적입니다.

설명: 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

MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법

row_number() over (비즈니스 로직)

기능: 지정된 조건을 찾아 순위를 매기고, 조건이 같으면 순위가 달라지며, 순위는 불연속적입니다.

쿼리된 값이 동일하더라도 병렬 여부를 고려하지 않고 연속적으로 정렬하는 기능입니다. 즉, 1 2 3 4 5 6

SELECT id, name, score, row_number() over(ORDER BY score DESC) AS 'rank' FROM student

MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법

Postscript

함수의 비즈니스 로직은 복잡할 수 있으며 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를 사용하는 방법

위 내용은 MySQL에서 Rank() over,density_rank() over 및 row_number() over를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제