복붙노트

[SQL] 내가 SUM을 사용하는 방법 () OVER ()

SQL

내가 SUM을 사용하는 방법 () OVER ()

이 코드의 버그를 이해할 수 없다

ID      AccountID       Quantity
1          1               10           Sum = 10
2          1               5                = 10 + 5 = 15
3          1               2                = 10 + 5 + 2 = 17
4          2               7                = 7
5          2               3                = 7 + 3 = 10  

SELECT ID, AccountID, Quantity, 
       SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT, 
FROM tCariH

해결법

  1. ==============================

    1.당신이 합계를 실행 반환하는 쿼리를 예상하지만 계정 ID의 두 파티션 당신에게 같은 값을 제공해야합니다 것 같다.

    당신이 합계를 실행 반환하는 쿼리를 예상하지만 계정 ID의 두 파티션 당신에게 같은 값을 제공해야합니다 것 같다.

    SUM과 합계를 실행 얻기 위해 (), 당신은 파티션 BY 후 하위 ORDER BY 절을 추가해야 OVER () ...,이 같은 :

    SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY ID)
    

    그러나 모든 데이터베이스 시스템은 윈도우 집계 함수의 OVER 절에 의해 ORDER를 지원, 기억. (예를 들어, SQL Server가 최신 버전까지 지원하지 않았고, SQL 서버 2012)

  2. ==============================

    2.당신은 SQL 2012을 사용하는 경우 당신은 시도해야

    당신은 SQL 2012을 사용하는 경우 당신은 시도해야

    SELECT  ID, 
            AccountID, 
            Quantity, 
            SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY AccountID rows between unbounded preceding and current row ) AS TopBorcT, 
    FROM tCariH
    

    날짜 열을 기준으로 사용할 수 더 주문하는 경우.

  3. ==============================

    3.쿼리는 다음과 같이 될 것이다 :

    쿼리는 다음과 같이 될 것이다 :

    SELECT ID, AccountID, Quantity, 
           SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT 
    
           FROM #Empl ORDER BY AccountID
    

    그룹화와 같은 작품으로 파티션. 합이 계정 ID에 해당 될 수 있도록 여기에서 우리는 계정 ID에 의해 그룹화된다.

    그래서 결과는 첨부 된 스냅 샷과 같이 나타납니다.

  4. from https://stackoverflow.com/questions/10039431/how-can-i-use-sum-over by cc-by-sa and MIT license