CodeGym /행동 /SQL SELF /SUM()로 데이터 합치기 — 문법이랑 예시

SUM()로 데이터 합치기 — 문법이랑 예시

SQL SELF
레벨 7 , 레슨 2
사용 가능

상상해봐... 너한테 마트에서 산 물건 리스트가 엄청 길게 있어. 결국 얼마 썼는지 합계를 내고 싶지? 근데 그걸 손으로 다 더할 순 없잖아? 근데 판매자들은 이미 다 데이터베이스에 저장해놨어. 그래서 너는 딱 맞는 금액이 찍힌 영수증을 받는 거지. 아마 그들의 앱 어딘가에서 오늘의 주인공 SUM() 함수가 도와주고 있을 거야! 이건 숫자 타입 컬럼의 값을 다 더해주는 집계 함수야.

SUM() 문법

SUM() 함수는 이름처럼 진짜 간단하게 생겼어. 근데 하나씩 뜯어보자:

SELECT SUM(컬럼)
FROM 테이블;

이 함수는 지정한 컬럼의 모든 값을 다 더해줘. 근데 솔직히 말해서: 텍스트나 날짜를 마법처럼 더해주진 않아! 오직 숫자만 가능해.

SUM() 사용 예시

간단한 예시부터 시작해보자. salaries라는 테이블이 있는데, 여기엔 직원들 월급이 저장돼 있어:

employee_id salary
1 50000
2 60000
3 55000
4 75000

예시 1: 모든 월급 합치기

회사 전체 월급 총액이 궁금해? 이렇게 하면 돼:

SELECT SUM(salary) AS total_salary
FROM salaries;

결과:

total_salary
240000

여기서 무슨 일이 있었냐면? PostgreSQL이 salary 컬럼의 모든 값(50000 + 60000 + 55000 + 75000)을 더해서 total_salary라는 새 컬럼에 결과를 보여준 거야.

예시 2: 조건이 있는 합계

이번엔 월급이 55,000보다 많은 직원들만의 총 월급이 궁금하다면? 우리 모두 좋아하는 WHERE 연산자를 써보자:

SELECT SUM(salary) AS high_salary_total
FROM salaries
WHERE salary > 55000;

결과:

high_salary_total
135000

여기선 뭐가 일어난 거냐면? PostgreSQL이 먼저 WHERE salary > 55000 필터를 적용해서 월급이 60000, 75000인 행만 남겼어. 그리고 그 둘을 더한 거지 (60000 + 75000).

3. SUM() 쓸 때 주의할 점

NULLSUM()에 어떤 영향을 줄까? 이미 봤듯이, NULL은 "아무것도 아님"이고 SUM()은 그걸 계산에 포함시키지 않아. 테이블을 보자:

employee_id salary
1 50000
2 60000
3 NULL
4 75000

이제 월급 총액을 구해보면:

SELECT SUM(salary) AS total_salary
FROM salaries;

결과:

total_salary
185000

왜 "185000"이고 "NULL"이 아니지? PostgreSQL은 NULL을 그냥 무시하고 합계를 계산해.

SUM()로 복잡한 쿼리 예시

예시 1: 합계랑 필터링을 한 번에

sales라는 테이블이 있다고 해보자. 여기엔 판매 데이터가 들어있어. 구조는 이래:

product_id amount
1 150
2 200
3 NULL
1 100

첫 번째 상품(product_id = 1)만의 판매 합계를 알고 싶으면 이렇게 해:

SELECT SUM(amount) AS total_sales
FROM sales
WHERE product_id = 1;

결과:

total_sales
150

예시 2: 합계랑 추가 계산

다시 salaries 테이블로 돌아가서, 월급 총액이 200,000을 얼마나 넘는지 알고 싶으면:

SELECT SUM(salary) - 200000 AS surplus
FROM salaries;

결과:

surplus
40000

SUM() 쓸 때 자주 하는 실수

숫자가 아닌 데이터에 SUM() 쓰기: 실수로 텍스트 같은 걸 합치려고 하면 에러가 나. 컬럼의 데이터 타입을 꼭 확인해!

NULL 무시하기: 초보자들은 NULL도 계산에 들어간다고 착각하는데, 그럼 예상치 못한 결과가 나올 수 있어.

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION