SQL Server 랭킹 함수

SQL Server 랭킹 함수

2022-06-03 last update

5 minutes reading MySQL MariaDB
데이터를 처리할 때, 기본적으로 각종 기록을 분류하거나 정렬해야 한다.예를 들어 당신은 팀의 득점에 따라 팀을 랭킹하고 직원의 임금에 따라 직원을 랭킹할 수 있습니다.
우리 대다수의 사람들은 하나의 값을 되돌려 주는 함수를 사용하여 계산을 집행한다.이 가이드에서는 SQL Server rank 함수를 사용하여 특정 행 그룹에 집합 값을 반환하는 방법을 설명합니다.

SQL Server Rank() 함수: 기본


rank() 함수는 SQL Server 창 함수의 일부입니다.그것은 결과 집합의 특정 구역의 줄마다 질서를 분배함으로써 일한다.
이 함수는 비슷한 구역의 줄에 같은 질값을 분배합니다.첫 번째 질의 값을 1로 지정하고 각 질의 연속적인 값을 추가합니다.
rank 함수의 구문은 다음과 같습니다.
rank OVER (
[partition BY expression],
ORDER BY expression [ASC|DESC]
);
상술한 문법을 분해해 봅시다.
partition by 자구는 줄을rank 함수를 응용하는 특정 구역으로 구분합니다.예를 들어 직원 데이터가 포함된 데이터베이스에서 줄이 있는 부서에 따라 줄을 구분할 수 있다.
다음 자구 ORDER BY는 지정된 파티션에서 행의 조직 순서를 정의합니다.

SQL Server Rank() 함수: 실제 사용 방법


SQL Server에서 rank () 함수를 사용하는 방법에 대한 실제 예시를 살펴보겠습니다.
먼저 직원 정보를 포함하는 예시표를 만듭니다.
CREATE TABLE developers(
id INT IDENTITY(1,1), NOT a NULL PRIMARY KEY,
name VARCHAR(200) NOT NULL,
department VARCHAR(50),
salary money
);
그런 다음 테이블에 데이터를 추가합니다.
INSERT INTO developers(name, department, salary)
VALUES ('Rebecca', 'Game Developer',$120000 ),
('James', 'Mobile Developer', $110000),
('Laura', 'DevOps Developer', $180000),
('Quill', 'Mobile Developer', $109000),
('John', 'Full-Stack Developer', $182000),
('Matthew', 'Game Developer', $140000),
('Caitlyn', 'DevOps Developer',$123000),
('Michelle', 'Data Science Developer', $204000),
('Antony', 'Front-End Developer', $103100),
('Khadija', 'Backend Developer', $193000),
('Joseph', 'Game Developer', $11500);
SELECT * FROM developers;
다음 레코드가 포함된 테이블이 있어야 합니다.

예제 1: 주문자


질 함수를 사용하여 데이터에 질을 지정합니다.질의 예는 다음과 같습니다.
SELECT *, rank()  OVER (ORDER BY department) AS rank_number FROM developers;
위의 질의는 다음과 같이 출력되어야 합니다.

위의 출력에 따르면 이 함수는 유사한 부서에서 온 줄에 유사한 질값을 분배했다.이 함수는 같은 질의 값을 가진 수량에 따라 약간의 질의 값을 뛰어넘는 것을 주의하십시오.
예를 들어 질7에서 질10으로 넘어간다. 왜냐하면 질8과 9는 두 개의 연속적인 질7값에 분배되기 때문이다.

예 2: 파티션 기준


아래의 예를 고려하다.그것은rank 함수를 사용하여 같은 부서의 개발자에게 등급을 분배한다.
SELECT *, rank() OVER (partition BY department ORDER BY salary DESC) AS rank_number FROM developers;
위의 조회는 우선 줄의 부서에 따라 줄을 구분한다.다음으로orderby 자구는 임금 인하 순서에 따라 각 구역의 기록을 정렬합니다.
결과 출력은 다음과 같습니다.

결론


이 안내서에서 SQL Server의 rank 함수를 어떻게 사용하는지 설명합니다. 이 함수는 줄을 구분하고 정렬할 수 있도록 합니다.
읽어주셔서 감사합니다!