[Oracle] 오라클 가로 합계 구하는 방법
- 데이터베이스/오라클
- 2023. 8. 2.
오라클 쿼리에서 가로 합계를 구하기 위해서는, 합계를 구할 각 칼럼을 SUM 함수를 사용하여 합산 후 모두 더하면 가로 합계가 계산된다. 오라클은 NULL과 수치 값을 더할 수 없기 때문에 가로 합계를 구할 때 계산 오류가 발생할 수 있으므로 아래의 주의 사항도 꼭 확인하기 바란다. 세로의 총합계를 구하기 위해서는 ROLLUP 함수를 사용하면 구할 수 있다.
목차 |
가로 합계 구하기
WITH temp AS
(
SELECT 150 AS col1, 80 AS col2, 200 AS col3 FROM dual UNION ALL
SELECT 100 AS col1, NULL AS col2, 250 AS col3 FROM dual UNION ALL
SELECT 200 AS col1, 100 AS col2, NULL AS col3 FROM dual UNION ALL
SELECT 120 AS col1, 200 AS col2, 100 AS col3 FROM dual
)
SELECT SUM(col1)
, SUM(col2)
, SUM(col3)
, SUM(col1) + SUM(col2) + SUM(col3)
FROM temp
![]() |
오라클에서 여러 개의 칼럼을 가로로 합계를 구할 때는 칼럼별 SUM 함수로 합산 후 모두 더해주면 된다.
가로 합계 구할 때 주의 사항
WITH temp AS
(
SELECT 150 AS col1, 80 AS col2, 200 AS col3 FROM dual UNION ALL
SELECT 100 AS col1, NULL AS col2, 250 AS col3 FROM dual UNION ALL
SELECT 200 AS col1, 100 AS col2, NULL AS col3 FROM dual UNION ALL
SELECT 120 AS col1, 200 AS col2, 100 AS col3 FROM dual
)
SELECT SUM(col1)
, SUM(col2)
, SUM(col3)
, SUM(col1 + col2 + col3) AS sum1
, SUM(NVL(col1, 0) + NVL(col2, 0) + NVL(col3, 0)) AS sum2
FROM temp
![]() |
칼럼의 값을 모두 합산 후 SUM 함수로 최종 합산할 경우, 칼럼에 NULL이 있을 경우 합산에 오류가 있을 수 있다.
오라클은 NULL과 수치 값을 더할 경우 연산이 되지 않고 NULL이 반환된다.
수치 값을 더할 때는 NULL이 없도록 NVL 함수로 치환 후 합산을 해야 하며, 가로 합계를 구할 때는 첫 번째 예제처럼 칼럼별 SUM 함수로 합산 후 더하는 것이 효율적이다. (예, SUM(col1) + SUM(col2) + SUM(col3))
GROUP BY 절과 가로 합계 구하기
SELECT job
, SUM(sal)
, SUM(comm)
, SUM(sal) + SUM(comm)
FROM emp
GROUP BY job
![]() |
GROUP BY 절을 사용할 때는 칼럼별 SUM 함수로 합산 후 모두 더해주면 된다.
[Oracle] 오라클 ROLLUP 총합계만 구하기
오라클에서 ROLLUP 함수를 사용하여 소계, 합계를 구할 수 있다. 그러나 소계를 제외하고 합계만 표시하고 싶을 때는 다양한 방법이 있겠지만, ROLLUP 칼럼을 괄호로 묶어서 합계를 구하는 방법과 GR
gent.tistory.com
[Oracle] 오라클 ROLLUP 합계, 소계 구하기
오라클 GROUP BY 쿼리에서 ROLLUP 함수를 사용하여 손쉽게 합계와 소계를 구할 수 있다. 1. GROUP BY 컬럼이 하나인 경우 - GROUP BY 절에 ROLLUP 함수를 추가한 후 그룹핑 컴럼을 인자로 넣는다 SELECT job , SUM(
gent.tistory.com
[Oracle] 오라클 누적 합계 구하기 (SUM OVER)
오라클에서 누적 합계를 구하기 위해서는 SUM 함수와 OVER 절을 사용하면 된다. OVER 절을 사용하면 GROUP BY 절을 사용하지 않고도 SELECT 절에서 단독으로 합계를 구할 수 있다. OVER 절 내부의 ORDER BY
gent.tistory.com