SQLite | SQLite 함수 | 컬럼 값의 합계 구하기 (sum 함수, total 함수)

sum 함수 및 total 함수를 사용하면 지정된 컬럼에 저장된 값의 합계를 구할 수 있다. 여기에서는 sum 함수 및 total 사용에 대해 설명한다.

sum 함수와 total 함수 사용법

sum 함수는 값의 합계를 구하기 위해 사용한다. 형식은 다음과 같다.

sum(컬럼명)

인수에 지정된 컬럼에 저장된 값의 합계 결과를 반환한다. GROUP BY 절을 사용하면 그룹별로 합계를 구할수 있다.

또한 total 함수도 값의 합계를 구하기 위해 사용한다. 형식은 다음과 같다.

total(컬럼명)

동일하게 GROUP BY 절에 인수로 컬럼 지정하면 해당 컬럼에 저장된 값들의 합계를 구하고 그 결과를 그룹별로 구할 수 있다.

두 함수는 모두 컬럼에 저장된 값을 합계의 결과를 구하는데, sum 함수는 컬럼에 저장되어 있는 값이 정수이라면 합계를 정수로 반환하지만, total 함수의 경우 컬럼에 저장된 값이 정수이어도 합계는 부동 소수점 숫자로 반환한다. 컴럼에 부동 소수점 숫자가 저장되어 있다면 두 함수 모두 합계를 부동 소수점 숫자로 반환한다.

또한 합계를 하는 컬럼에 있는 값이 NULL만 있다면 sum 함수는 NULL을 반환하지만, total 함수는 0.0를 반환한다.

그러면 실습으로 합계를 구해 보겠다. 먼저 다음과 같이 테이블을 만든다.

create table store (address text, sales);
sqlite> create table store (address text, sales);
sqlite> 

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into store values ('Seoul', NULL);
sqlite> insert into store values ('Seoul', NULL);
sqlite> 
sqlite> select * from store;
address     sales     
----------  ----------
Seoul                 
sqlite> 

현재 데이터는 한건이고, sales 열의 값은 NULL로 되어 있다. 그럼 sum 함수와 total 함수 sales 컬럼 값의 합계를 구해보자.

select sum(sales), total(sales) from store;
sqlite> .mode column
sqlite> .header on
sqlite> 
sqlite> select sum(sales), total(sales) from store;
sum(sales)  total(sales)
----------  ------------
            0.0         
sqlite> 

지덩된 컬럼에 NULL만 저장되어 있는 경우에 sum 함수는 NULL을 반환하지만 total 함수는 0.0를 반환한다.

그럼 데이터를 더 추가하도록 한다.

insert into store values ('Busan', 450);
insert into store values ('Daejeon', 380);
insert into store values ('Seoul', 95);
sqlite> insert into store values ('Busan', 450);
sqlite> insert into store values ('Daejeon', 380);
sqlite> insert into store values ('Seoul', 95);
sqlite> 
sqlite> select * from store;
address     sales     
----------  ----------
Seoul                 
Busan       450       
Daejeon     380       
Seoul       95        
sqlite> 

그럼 다시 sum 함수와 total 함수 sales 컬럼 값의 합계를 구한다.

select sum(sales), total(sales) from store;
sqlite> select sum(sales), total(sales) from store;
sum(sales)  total(sales)
----------  ------------
925         925.0       
sqlite> 

컬럼에 있는 값이 정수만 있어서 sum 함수는 결과를 정수로 반환하지만, total 함수는 결과를 항상 부동 소수점 숫자로 반환한다.

그럼 이번에는 부동 소수점 데이터를 추가를 한다.

insert into store values ('Busan', 320.45);
sqlite> insert into store values ('Busan', 320.45);
sqlite> 
sqlite> select * from store;
address     sales     
----------  ----------
Seoul                 
Busan       450       
Daejeon     380       
Seoul       95        
Busan       320.45    
sqlite> 

그럼 다시 sum 함수와 total 함수 sales 컬럼 값의 합계를 구한다.

select sum(sales), total(sales) from store;
sqlite> select sum(sales), total(sales) from store;
sum(sales)  total(sales)
----------  ------------
1245.45     1245.45     
sqlite> 

컬럼에 저장된 값에 부동 소수점이 포함되어 있는 경우는 sum 함수, total 함수가 모두 부동 소수점 숫자로 결과를 반환한다.

이번에는 GROUP BY 절을 사용하여 address별로 sum 함수, total 함수를 사용하여 합계를 구한다.

select address, sum(sales), total(sales) from store group by address;
sqlite> select address, sum(sales), total(sales) from store group by address;
address     sum(sales)  total(sales)
----------  ----------  ------------
Busan       770.45      770.45      
Daejeon     380         380.0       
Seoul       95          95.0        
sqlite> 

각 주소 별로 합계를 구해지는 것을 확인할 수 있다.




최종 수정 : 2019-11-13