Data Analysis 데이터 분석/SQL 통한 Database 관리

percent_rank()

Queen Julia 2024. 8. 18. 16:57

`PERCENT_RANK()`는 SQL의 윈도우 함수로, 특정 행의 상대적 순위를 백분율로 나타내는 데 사용됩니다. 이 함수는 데이터 집합에서 각 행의 상대적 위치를 계산하여, 그 결과를 0과 1 사이의 값으로 반환합니다.

### 구문

```sql
PERCENT_RANK() OVER (PARTITION BY partition_expression ORDER BY order_expression)
```

- **`PARTITION BY partition_expression`** (선택적): 데이터를 그룹화하여 각 그룹 내에서 백분율 순위를 계산합니다. 지정하지 않으면 전체 데이터 집합에서 계산됩니다.
- **`ORDER BY order_expression`**: 백분율 순위를 계산할 때 사용하는 정렬 기준입니다. 이 기준에 따라 각 행의 순위를 계산합니다.

### 계산 방식

`PERCENT_RANK()`는 다음의 공식을 사용하여 백분율 순위를 계산합니다:

\[ \text{PERCENT\_RANK} = \frac{\text{RANK} - 1}{\text{NUMBER\_OF\_ROWS} - 1} \]

- **`RANK`**: 현재 행의 순위입니다.
- **`NUMBER_OF_ROWS`**: 데이터 집합 또는 파티션 내의 총 행 수입니다.

### 예제

가정: `sales` 테이블에 판매 데이터가 저장되어 있습니다.

| sales_date | sales_amount |
|------------|--------------|
| 2024-01-01 | 1000         |
| 2024-01-02 | 1200         |
| 2024-01-03 | 1100         |
| 2024-01-04 | 1300         |

#### 기본 사용 예제

판매 금액의 백분율 순위를 계산합니다:

```sql
SELECT
    sales_date,
    sales_amount,
    PERCENT_RANK() OVER (ORDER BY sales_amount) AS percent_rank
FROM sales;
```

**결과**:

| sales_date | sales_amount | percent_rank |
|------------|--------------|--------------|
| 2024-01-01 | 1000         | 0.0          |
| 2024-01-03 | 1100         | 0.5          |
| 2024-01-02 | 1200         | 0.75