SQL 누적 합계

Sql Nujeog Habgye



SQL에서 누적 합계는 데이터베이스 테이블 내 숫자 열의 누계를 계산할 수 있는 방법을 나타냅니다. 누적 합계는 진행 상황 추적이나 특정 값의 이동 평균 계산과 같은 다양한 시나리오에서 사용됩니다.

본 튜토리얼에서는 다양한 방법과 기법을 사용하여 SQL에서 누적합을 구현하고 활용하는 방법을 알아봅니다.







샘플 데이터

누적 합계를 구현하고 사용하는 방법을 더 잘 이해하기 위해 먼저 샘플 데이터를 사용하여 기본 테이블을 설정해 보겠습니다. 이를 통해 이 게시물에서는 모든 방법의 작동 방식을 빠르고 효율적으로 시연할 수 있습니다.



제품 정보를 저장하는 기본 테이블을 만드는 것부터 시작하세요.



테이블 제품 만들기 (
product_id INT 기본 키,
제품_이름 VARCHAR ( 255 ) ,
가격 십진수 ( 10 , 2 )
) ;





그러면 제품 ID, 제품 이름, 각 제품 가격을 저장하는 'products'라는 새 테이블이 생성됩니다.

그런 다음 다음 삽입 문 예제에 표시된 대로 샘플 데이터를 추가할 수 있습니다.



제품에 삽입 ( product_id, 제품_이름, 가격 )
가치
( 1 , '비주얼 스튜디오 코드' , 10.00 ) ,
( 2 , '숭고한 텍스트' , 80.00 ) ,
( , 'PyCharm 프로페셔널' , 199.00 ) ,
( 4 , '이클립스 IDE' , 30.00 ) ,
( 5 , 'IntelliJ IDEA Ultimate' , 699.00 ) ,
( 6 , 'GitHub 데스크탑' , 20.00 ) ,
( 7 , '기다려 소프트웨어' , 10.00 ) ,
( 8 , '엑스코드' , 660.00 ) ,
( 9 , '넷빈즈' , 0.00 ) ,
( 10 , '원자' , 60.00 ) ;

참고: 주어진 데이터는 완전히 허구입니다. 이는 나열된 항목의 실제 가격을 나타내지 않습니다.

결과 테이블은 다음과 같습니다.

SQL 누적 합계(자체 조인)

특정 열에 대해 누적 합계를 수행하는 데 사용할 수 있는 기술 중 하나는 자체 조인 방법을 사용하는 것입니다. 이 방법의 한 가지 장점은 Window 기능을 지원하지 않는 SQL 데이터베이스에서도 거의 모든 SQL 데이터베이스에서 작동한다는 것입니다.

이전의 '제품' 테이블을 예로 들어 보겠습니다. 다음 쿼리에 표시된 대로 가격 열의 누적 합계를 생성할 수 있습니다.

선택하다
p1.제품_ID,
p1.제품_이름,
p1.가격,
합집합 ( p2.가격 ) AS 누적_합
에서
제품 p1
가입하다
제품 p2

p1.제품_ID > = p2.제품_ID
그룹 기준
p1.제품_ID,
p1.제품_이름,
p1.가격
주문
p1.제품_ID;

쿼리 작동 방식을 확인하셨나요? 그렇지 않은 경우 단계별로 설명하는 동안 우리와 함께 해주세요.

주어진 예제 쿼리에서는 셀프 조인을 수행할 수 있는 'products' 테이블에 대해 두 개의 별칭 'p1'과 'p2'를 만드는 것부터 시작합니다.

그런 다음 'p1'의 'product_id'가 'p2'의 'product_id'보다 크거나 같다는 조건으로 'p1'과 'p2'를 결합합니다.

다음 단계에서는 기본적으로 각 행의 가격 누적 합계를 계산하는 sum() 함수를 호출합니다.

마지막으로 “product_id”, “product_name”, “price”를 사용하여 결과를 그룹화하고 결과를 정렬합니다.

이 작업 후에는 다음과 같이 결과 테이블에 표시된 대로 각 레코드에 대한 누적 합계가 있어야 합니다.

보시다시피 이전의 모든 행의 총합을 얻습니다. 마지막 행에는 이전 행의 총합이 포함되어야 합니다.

SQL 누적 합계(창 함수)

SQL에서 누적 합계를 계산하는 보다 효율적이고 실용적인 방법은 지원될 때마다 창 기능을 활용하는 것입니다.

SQL Server, PostgreSQL 또는 MySQL 버전 8.0 이상과 같은 데이터베이스가 있는 경우 이는 특정 열의 누적 합계를 결정하는 데 가장 유용하고 권장되는 방법입니다.

다음에 설명된 예제를 살펴보세요.

선택하다
제품 ID,
상품명,
가격,
합집합 ( 가격 ) 위에 ( 제품_ID별 주문 ) AS 누적_합
에서
제품;

이 경우 'products' 테이블에서 'product_id', 'product_name' 및 'price' 열을 선택하는 것부터 시작합니다.

그런 다음 OVER 절을 사용하여 SUM() 함수를 창 함수로 사용합니다.

OVER 절에서는 누적 합계가 계산되는 순서를 정의하는 ORDER BY 절을 지정합니다.

그러면 다음과 유사한 출력이 반환됩니다.

창 기능을 사용하는 것이 자체 조인을 사용하는 것보다 일관되고 효율적이며 읽기 쉽다는 것을 알 수 있습니다.

결론

이 튜토리얼에서는 SQL의 누적 합계에 대해 모두 배웠습니다. 또한 자체 조인 및 창 함수를 사용하여 SQL에서 누적 합계를 수행하는 방법도 다루었습니다.