> 데이터 베이스 > MySQL 튜토리얼 > SQL 테이블에서 값의 연속 발생을 계산하는 방법은 무엇입니까?

SQL 테이블에서 값의 연속 발생을 계산하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-05 15:40:40
원래의
176명이 탐색했습니다.

How to Count Consecutive Occurrences of Values in a SQL Table?

연속 발생을 기준으로 값 그룹화

테이블에서 값의 연속 발생을 계산하는 효과적인 방법은 행의 차이를 계산하는 것입니다. 숫자입니다.

다음 사항을 고려하세요. query:

select name, count(*) 
from (
    select t.*,
           (row_number() over (order by id) -
            row_number() over (partition by name order by id)
           ) as grp
    from t
) t
group by grp, name;
로그인 후 복사

이 하위 쿼리는 각 행에 대해 두 개의 행 번호를 생성합니다.

  • row_number() over (order by id): 전체 행 순서를 기반으로 한 일련 번호입니다.
  • row_number() over(파티션별 이름 순서 ID별): 각 고유에 대한 일련 번호 name.

두 행 번호를 빼서 이름이 변경되거나 동일한 이름이 연속해서 나타날 때마다 증가하는 "그룹" 식별자(grp)를 생성합니다.

그런 다음 최종 쿼리는 이 grp를 기반으로 행을 그룹화하고 각 그룹 내에서 각 이름의 발생 횟수를 계산합니다. 이를 통해 원하는 연속 발생 횟수를 얻을 수 있습니다.

+------+------------+
| Name | Repetition |
+------+------------+
| A    |          2 |
| B    |          4 |
| C    |          1 |
| B    |          2 |
+------+------------+
로그인 후 복사

이 접근 방식은 행 번호의 차이를 그룹화 메커니즘으로 활용하여 테이블에서 연속 값을 식별하는 효율적인 방법을 제공합니다.

위 내용은 SQL 테이블에서 값의 연속 발생을 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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