[sql] 집계 함수를 사용한 테이블 조인 예시

이 예시에서는 SQL을 사용하여 두 개의 테이블을 조인하고, 집계 함수를 사용하여 조인된 데이터를 집계하는 방법에 대해 알아보겠습니다.

테이블 생성

채식주의자들을 추적할 수 있는 ‘식품’ 테이블과 해당 식품을 소비한 ‘사용자’ 테이블을 생성하겠습니다.

CREATE TABLE 식품 (
  id INT PRIMARY KEY,
  이름 VARCHAR(100),
  유형 VARCHAR(50),
  가격 DECIMAL(10, 2)
);

CREATE TABLE 사용자 (
  id INT PRIMARY KEY,
  이름 VARCHAR(100),
  식품_id INT,
  소비_수량 INT,
  FOREIGN KEY (식품_id) REFERENCES 식품(id)
);

데이터 입력

여러 개의 식품과 사용자들이 가지고 있는 데이터를 넣어주자.

INSERT INTO 식품 (id, 이름, 유형, 가격) VALUES
(1, '사과', '과일', 2.99),
(2, '당근', '채소', 1.99),
(3, '두부', '단백질', 3.49);

INSERT INTO 사용자 (id, 이름, 식품_id, 소비_수량) VALUES
(1, '아리', 1, 5),
(2, '벤', 2, 3),
(3, '새라', 3, 2),
(4, '주니어', 1, 7),
(5, '리사', 2, 4),
(6, '톰', 1, 3);

테이블 조인

이제 사용자가 어떤 식품을 소비했는지와 해당 식품의 세부 정보를 포함하는 단일 결과를 얻기 위해 두 테이블을 조인하겠습니다.

SELECT 사용자.이름, 식품.이름, 식품.유형, 사용자.소비_수량
FROM 사용자
JOIN 식품 ON 사용자.식품_id = 식품.id;

집계 함수 사용

이제 위의 결과에 대해 사용자별로 총 소비 금액을 계산하고, 사용자들의 총 소비 금액을 집계해보겠습니다.

SELECT 사용자.이름, SUM(식품.가격 * 사용자.소비_수량) AS _소비_금액
FROM 사용자
JOIN 식품 ON 사용자.식품_id = 식품.id
GROUP BY 사용자.이름;

위의 쿼리는 각 사용자가 소비한 총 금액을 반환합니다.

이것으로 SQL을 사용한 집계 함수와 테이블 조인에 대한 예시를 알아봤습니다.