데이터베이스

SQL (6) - 집계 함수

monstro 2025. 2. 10. 11:59
728x90
반응형

이번 포스트에서는 SQL에서 속성의 데이터들을 집계하는 집계 함수들에 대해 알아보겠습니다.

 

1) COUNT 연산자

COUNT 연산자데이터의 개수집계하는 함수입니다.

다음과 같이 사용할 수 있습니다.

 

-- COUNT 연산자는 * 를 사용할 수 있는 유일한 연산자
SELECT COUNT(*)
FROM players;

-- 특정 속성을 대상으로 집계를 수행함, 이때 null은 자동으로 무시됨
SELECT COUNT(birthYear)
FROM players;

 

첫 번째 쿼리의 실행 결과는 다음과 같습니다.

 

두 번째 쿼리의 실행 결과는 다음과 같습니다.

 

위의 2가지 방법 말고도 중복을 배제하여 집계하는 방식도 있습니다.

 

1 - 1) DISTINCT : 중복을 배제

DISTINCTSELECT 연산자와 같이 사용되어 중복되는 데이터를 없애주는 용도로 사용합니다.

-- birthCity 속성의 데이터에서 중복을 없애고 데이터를 가져옴
SELECT DISTINCT birthCity
FROM players;

 

위 쿼리의 실행결과는 다음과 같습니다.

 

또한 DISTINCT 연산자여러 속성한번에 적용가능합니다.

단, 이때는 인자로 넣어준 속성의 데이터가 모두 중복되야만 해당 데이터를 배제하게 됩니다.

SELECT DISTINCT birthYear, birthMonth, birthDay
FROM players
ORDER BY birthYear;

 

위 쿼리의 실행 결과는 다음과 같습니다.

 

birthYear이 동일하고, birthMonth도 동일한 데이터도 존재하지만,

모든 속성의 데이터가 동일하지 않으므로 배제되지 않은 모습을 볼 수 있습니다.

 

1 - 2) COUNT + DISTINCT

이제 COUNT 연산자에 DISTINCT를 사용하여 중복을 배제한 집계를 수행해보겠습니다.

SELECT DISTINCT COUNT(birthCity)
FROM players;

 

위 쿼리의 실행 결과는 다음과 같습니다.

 

 

2) AVG 연산자

집계함수 중에서 AVG 연산자인자로 넣어준 속성의 데이터들평균구하는 함수입니다.

SELECT AVG(weight)
FROM players;

 

위 쿼리의 실행결과는 다음과 같습니다.

 

AVG 연산자의 경우, null을 따로 고려하지 않으므로 이전에 알아본

CASE ~ WHEN~ 연산자활용하여 이를 수정해줄 수 있습니다.

SELECT AVG(CASE WHEN weight IS NULL THEN 0 ELSE weight END)
FROM players;

 

위 쿼리의 실행 결과는 다음과 같습니다.

 

weight 속성의 데이터가 null인 경우 해당 데이터를 0으로 대체한 후에

weight 속성의 평균을 구하고 있는 것을 볼 수 있습니다.

 

3) MIN / MAX 연산자

마지막으로는 최대값최소값을 구하는 MIN / MAX 연산자에 대해 알아보겠습니다.

SELECT MAX(weight), MIN(weight)
FROM players;

 

weight라는 속성의 데이터에서 최대값과 최소값을 구하는 쿼리입니다.

실행 결과는 다음과 같습니다.

 

728x90
반응형

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

SQL (8) - 데이터 조작어(DML)  (0) 2025.02.11
SQL (7) - GROUP BY  (0) 2025.02.11
SQL (5) - CASE  (0) 2025.02.05
SQL (4) - DATETIME  (0) 2025.02.05
SQL (3) - 산술연산과 문자열  (1) 2025.02.04