이번 포스트에서는 SQL에서 속성의 데이터들을 집계하는 집계 함수들에 대해 알아보겠습니다.
1) COUNT 연산자
COUNT 연산자는 데이터의 개수를 집계하는 함수입니다.
다음과 같이 사용할 수 있습니다.
-- COUNT 연산자는 * 를 사용할 수 있는 유일한 연산자
SELECT COUNT(*)
FROM players;
-- 특정 속성을 대상으로 집계를 수행함, 이때 null은 자동으로 무시됨
SELECT COUNT(birthYear)
FROM players;
첫 번째 쿼리의 실행 결과는 다음과 같습니다.
두 번째 쿼리의 실행 결과는 다음과 같습니다.
위의 2가지 방법 말고도 중복을 배제하여 집계하는 방식도 있습니다.
1 - 1) DISTINCT : 중복을 배제
DISTINCT는 SELECT 연산자와 같이 사용되어 중복되는 데이터를 없애주는 용도로 사용합니다.
-- 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라는 속성의 데이터에서 최대값과 최소값을 구하는 쿼리입니다.
실행 결과는 다음과 같습니다.
'데이터베이스' 카테고리의 다른 글
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 |