NTILE 함수
Coddy SQL 여정의 기초 섹션에 포함된 레슨. 72개 중 67번째.
NTILE(n)은 행을 n개의 거의 동일한 크기의 그룹으로 나누어 번호를 매깁니다. 성능을 향상하기 위해 자주 사용됩니다. 한 번에 많은 양의 데이터를 전송하는 것은 좋지 않을 수 있으므로, 이 함수는 한 번에 더 작은 그룹을 전송할 수 있게 해 줍니다.
예를 들면:
| id | level |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1다음과 같이 반환됩니다:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
3개의 그룹을 얻었습니다. 그룹 1에는 4행, 그룹 2에는 5행과 6행, 그룹 3에는 7행이 있습니다.
행의 수가 n으로 균등하게 나누어지지 않을 때, NTILE은 가능한 한 균등하게 행을 분배하며, 더 큰 그룹이 먼저 나타납니다. 예를 들어, 행이 9개이고 NTILE(4)를 사용하면 다음과 같이 분배됩니다.
- 그룹 1: 3개 행
- 그룹 2: 2개 행
- 그룹 3: 2개 행
- 그룹 4: 2개 행
이를 통해 어떤 그룹도 다른 그룹과 행 수가 1개 넘게 차이 나지 않도록 하고, 남는 행은 번호가 더 낮은 그룹부터 먼저 분배합니다.
챌린지
쉬움사용 가능한 테이블 및 열:
creatures:creature_name,preference,has_legs('YES' 또는 'NO' 포함)
이 챌린지에서는 짝을 찾고 싶어 하는 생물들이 있습니다. 이들이 짝을 찾을 수 있도록 도와야 합니다.
각 생물은 숫자로 표시되는 선호도를 가지고 있습니다. 두 생물의 숫자가 충분히 가까우면 좋은 짝이 될 수 있습니다.
선호도 값을 기준으로 생물을 3개 그룹으로 나누되, 다리가 있는 생물(has_legs = 'YES')만 고려하세요. creature_name, preference, 그리고 해당 생물의 group_number(1, 2 또는 3)를 반환하세요. 결과는 preference를 기준으로 오름차순 정렬하세요.
직접 해보기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
직접 연습해 보세요: SQL 플레이그라운드