>데이터 베이스 >MySQL 튜토리얼 >분석 기능 없이 MySQL에서 누적 합계를 계산하는 방법은 무엇입니까?

분석 기능 없이 MySQL에서 누적 합계를 계산하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-03 15:51:43798검색

How to Calculate Cumulative Sum in MySQL Without Analytic Functions?

MySQL의 행 집합에 대한 누적 합계 계산

문제 설명:

결정 다음을 포함하는 쿼리 결과 집합에서 하루 중 모든 시간에 걸쳐 각 ID에 대한 누적 합계 ID, 요일, 시간 및 금액 열입니다.

답변:

SELECT IF(@prev_id = c.id AND @prev_day = c.day
         ,@cumtotal := @cumtotal + c.amount
         ,@cumtotal := c.amount) AS cumulative_total
     , @prev_id  := c.id  AS `id`
     , @prev_day := c.day AS `day`
     , c.hr
     , c.amount AS `amount'
  FROM ( SELECT @prev_id  := NULL
              , @prev_day := NULL
              , @subtotal := 0
       ) i
  JOIN (

         select id, day, hr, amount from
         ( //multiple joins on multiple tables)a
         left join
         (//unions on multiple tables)b
         on a.id=b.id

         ORDER BY 1,2,3
       ) c

추가 참고사항:

  • MySQL 8.0 이전 버전에는 누적합 분석 기능이 부족합니다.
  • 제공되는 솔루션은 MySQL 사용자 변수 및 제어 중단 처리를 활용하여 분석 기능을 에뮬레이션합니다.
  • 올바른 누적 합계 계산을 위해 ID, 날짜, 시간별로 행을 정렬하도록 쿼리가 수정되었습니다. .
  • 계산된 누적 합계 열이 결과 집합의 첫 번째 열로 반환됩니다.

위 내용은 분석 기능 없이 MySQL에서 누적 합계를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.