> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 그룹 내 행에 순차적으로 번호를 매기는 방법은 무엇입니까?

SQL에서 그룹 내 행에 순차적으로 번호를 매기는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-27 21:22:10
원래의
196명이 탐색했습니다.

How to Sequentially Number Rows within Groups in SQL?

SQL에서 키가 지정된 그룹별로 행에 순차적으로 번호를 매기는 작업

SQL에서 특정 키로 그룹화된 행에 순차적으로 번호를 매기는 작업은 SQL에서 일반적인 요구 사항입니다. 데이터 처리. 이를 달성하기 위해 다양한 SQL 데이터베이스는 각 키 그룹 내에서 효율적이고 정확한 행 번호 지정을 허용하는 기본 기능과 기술을 제공합니다.

다른 데이터베이스에서의 구현

많은 인기 있는 SQL 데이터베이스는 순차적 행 번호 지정을 위한 내장 함수 또는 확장 기능을 제공합니다.

  • SQL 서버: ROW_NUMBER() OVER (PARTITION BY ...)
  • Oracle: ROW_NUMBER() OVER (PARTITION BY ...)
  • Postgres: ROW_NUMBER() OVER (PARTITION BY ...)
  • Sybase: ROW_NUMBER() OVER (PARTITION BY ...)
  • MySQL 8.0 : ROW_NUMBER() OVER (PARTITION BY ...)
  • MariaDB 10.2 : ROW_NUMBER() OVER (PARTITION BY ...)
  • SQLite 3.25 : ROW_NUMBER() OVER (PARTITION BY ...)

예시 쿼리

CODE 열로 그룹화된 튜플이 있는 다음 예제 테이블을 고려하세요.

CODE | NAME
------|------
A     | Apple
A     | Angel
A     | Arizona
B     | Bravo
C     | Charlie
C     | Cat
D     | Dog
D     | Data
D     | Down
D     | Doppler
로그인 후 복사

각 CODE 그룹 내의 행에 순차적으로 번호를 매기려면 다음 쿼리를 사용할 수 있습니다. 사용됨:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 AS C_NO,
    NAME
FROM
    MyTable;
로그인 후 복사

출력

이 쿼리는 각 CODE 그룹 내에서 행 번호가 순차적으로 매겨진 다음과 같은 출력을 생성합니다.

CODE | C_NO | NAME
------|------|------
A     | 0    | Apple
A     | 1    | Angel
A     | 2    | Arizona
B     | 0    | Bravo
C     | 1    | Charlie
C     | 0    | Cat
D     | 0    | Dog
D     | 1    | Data
D     | 2    | Down
D     | 3    | Doppler
로그인 후 복사

참고:

ROW_NUMBER() 함수는 기본적으로 1부터 번호를 매깁니다. 원하는 출력에 맞추기 위해 ROW_NUMBER() OVER (PARTITION BY ...) - 1 표현식을 사용하여 번호 매기기를 1 기반에서 0 기반으로 이동합니다.

위 내용은 SQL에서 그룹 내 행에 순차적으로 번호를 매기는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿