[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.당신이 합계를 실행 반환하는 쿼리를 예상하지만 계정 ID의 두 파티션 당신에게 같은 값을 제공해야합니다 것 같다.
당신이 합계를 실행 반환하는 쿼리를 예상하지만 계정 ID의 두 파티션 당신에게 같은 값을 제공해야합니다 것 같다.
SUM과 합계를 실행 얻기 위해 (), 당신은 파티션 BY 후 하위 ORDER BY 절을 추가해야 OVER () ...,이 같은 :
SUM(Quantity) OVER (PARTITION BY AccountID ORDER BY ID)
그러나 모든 데이터베이스 시스템은 윈도우 집계 함수의 OVER 절에 의해 ORDER를 지원, 기억. (예를 들어, SQL Server가 최신 버전까지 지원하지 않았고, SQL 서버 2012)
-
==============================
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.쿼리는 다음과 같이 될 것이다 :
쿼리는 다음과 같이 될 것이다 :
SELECT ID, AccountID, Quantity, SUM(Quantity) OVER (PARTITION BY AccountID ) AS TopBorcT FROM #Empl ORDER BY AccountID
그룹화와 같은 작품으로 파티션. 합이 계정 ID에 해당 될 수 있도록 여기에서 우리는 계정 ID에 의해 그룹화된다.
그래서 결과는 첨부 된 스냅 샷과 같이 나타납니다.
from https://stackoverflow.com/questions/10039431/how-can-i-use-sum-over by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #을 통해 ado.net를 사용하여 SQL Server 데이터베이스에 값을 삽입 (0) | 2020.06.07 |
---|---|
[SQL] 왜 집계 함수는 where 절에서 허용되지 않습니다 (0) | 2020.06.07 |
[SQL] 방법에 대한 오라클의 COMMIT 트리거를 정의? (0) | 2020.06.07 |
[SQL] 어떻게 2005 SQL Server에서 열로 임의의 숫자를 반환합니까? (0) | 2020.06.07 |
[SQL] "DELETE CASCADE ON"MS SQL은 여러 외부 키는 동일한 테이블을 가리키는? (0) | 2020.06.07 |