본문 바로가기
CS/데이터베이스

[Oracle] 합계 출력 (SUM)

by 김크롱 2020. 9. 7.

합계 출력 (SUM)

: 숫자 데이터의 합계 출력

 

SELECT column1, SUM(column2)
    FROM tablename
    GROUP BY column1;

: column1으로 묶고 column2의 합계를 출력함

 

 

SELECT column1, SUM(column2)
    FROM tablename
    GROUP BY column1
    ORDER BY SUM(column2) DESC;

: column1 으로 묶고, SUM(column2) 기준 내림차순 정렬

 

 

SUM() 조건 오류

SELECT column1, SUM(column2)
    FROM tablename
    WHERE SUM(column2) >= 1000
    GROUP BY column1;

: 조건(WHERE)절에는 그룹함수가 허용되지 않음.

 - 그룹함수의 조건절은 HAVING절을 사용해야함

 

그룹함수의 조건 HAVING절

SELECT column1, SUM(column2)
    FROM tablename
    GROUP BY column1
    HAVING SUM(column2) >= 1000;
SELECT column1, SUM(column2)
    FROM tablename
    WHERE column1 != 'KOREA'
    GROUP BY column1
    HAVING SUM(column2) >= 1000;

: 조건 WHERE절과 HAVING을 함께 사용

 

 

쿼리 실행 순서

SELECT column1, SUM(column2)
    FROM tablename
    WHERE column1 != 'KOREA'
    GROUP BY column1
    HAVING SUM(column2) >= 1000
    ORDER BY SUM(column2) DESC;

: FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY

 

SELECT column1 AS nickname, SUM(column2)
    FROM tablename
    WHERE column1 != 'KOREA'
    GROUP BY nickname
    HAVING SUM(column2) >= 1000
    ORDER BY SUM(column2) DESC;

: FROM > WHERE > GROUP BY

 - GROUP BY 실행 시 nickname을 찾을 수 없기 때문에 GROUP BY절에 nickname을 사용하면 실행 순서로 인해 에러가 발생함

 

 

'CS > 데이터베이스' 카테고리의 다른 글

[Oracle] 데이터 분석 - 순위 출력 (RANK)  (0) 2020.09.08
[Oracle] 개수 출력 (COUNT)  (0) 2020.09.07
[Oracle] 평균값 출력 (AVG)  (0) 2020.09.07
[Oracle] 최소값 출력 (MIN)  (0) 2020.09.07
[Oracle] 최대값 출력 (MAX)  (0) 2020.09.07