SQL 집계 함수 개념 정리

robin·2021년 8월 18일
0

SQL 공부

목록 보기
4/6
post-thumbnail

집계 함수

  • 집계 함수는 값들의 집합을 계산해서 하나의 값을 리턴하는 함수임.
  • COUNT(*)를 제외하고, 집계 함수는 NULL 값을 무시함.
  • 집계 함수는 자주 SELECT문에서 GROUP BY절과 함께 사용됨.
  • WHERE절에 바로 집계함수 사용할 수 없음. GROUP BY를 하고 HAVING절에 집계함수를 쓰거나 WHERE절에 서브쿼리에서 집계함수를 사용할 수 있음.
    <예시>
   잘못된 사용
   
   SELECT math_score
   FROM scores
   WHERE english_score = MIN(english_score)
   올바른 사용
   
   SELECT math_score
   FROM scores
   WHERE english_score = (SELECT MIN(english_score) FROM scores)

1) COUNT

  • 특정한 기준을 충족하는 rows의 수 리턴함.
  • COUNT(*)를 제외하고 NULL 값은 세지 않음.

[기본 코드]

SELECT COUNT(column_name)
FROM table_name
WHERE condition

<예시>

[테이블 생성 및 값 삽입]

CREATE TABLE Customers(Id integer, Name varchar(100), Visits integer);
INSERT INTO Customers(Id, Name, Visits) values(1, "Amy", 1), (2, "Amy", 2), (3, "Jake", 3), (4, "Terry", 5), (5, NULL, NULL);

Table: Customers

IdNameVisits
1Amy1
2Amy2
3Jake3
4Terry5
5NULLNULL

[코드]

SELECT COUNT(*) 
FROM Customers

[결과]
5

  • 설명: 모든 rows의 수를 세서 총 5를 리턴함.

[코드]

SELECT COUNT(Name)
FROM Customers

[결과]

4

  • 설명: 이름 중 Amy, Amy, Jake, Terry 를 세서 총 4를 리턴함. (이름에서 NULL 값 제외함.)

[코드]

SELECT COUNT(DISTINCT Name)
FROM Customers

[결과]
3

  • 설명: 이름 중 중복되는 이름을 제거하여 Amy, Jake, Terry를 세서 총 3을 리턴함. (이름에서 NULL값 제외함.)

2) AVG

  • 숫자형 column의 평균값을 리턴함.
  • NULL 값은 제외됨.
  • NULL 값을 데이터에서 제외하고 평균을 구하려면 AVG 쓰면 됨. 그러나 NULL 값을 포함해서 평균을 구하려면 SUM으로 총합을 구하고 COUNT(*)로 나눠야함.

[기본 코드]

SELECT AVG(column_name)
FROM table_name
WHERE condition

<예시>
Table: Customers

IdNameVisits
1Amy1
2Amy2
3Jake3
4Terry5
5NULLNULL
NULL값을 제외하고 평균을 구하는 경우

[코드]

SELECT AVG(Visits)
FROM Customers

[결과]
2.75

  • 설명: (1+2+3+5)/4 = 2.75
NULL값을 포함하여 평균을 구하는 경우

[코드]

SELECT SUM(Visits) / COUNT(*)
FROM Customers

[결과]
2.2

  • 설명: (1+2+3+5)/5 = 2.2

3) SUM

  • 숫자형 column의 총합을 리턴함.
  • NULL 값은 제외됨.

[기본 코드]

SELECT SUM(column_name)
FROM table_name
WHERE condition

<예시>
Table: Customers

IdNameVisits
1Amy1
2Amy2
3Jake3
4Terry5
5NULLNULL

[코드]

SELECT SUM(visits)
FROM Customers

[결과]
11

  • 설명: 1+2+3+5 = 11

4) MIN

  • 선택한 column의 가장 작은 값을 리턴함.

[기본 코드]

SELECT MIN(column_name)
FROM table_name
WHERE condition

<예시>
Table: Customers

IdNameVisits
1Amy1
2Amy2
3Jake3
4Terry5
5NULLNULL

[코드]

SELECT MIN(visits)
FROM Customers

[결과]
1

5) MAX

  • 선택한 column의 가장 큰 값을 리턴함.

[기본 코드]

SELECT MAX(column_name)
FROM table_name
WHERE condition

<예시>
Table: Customers

IdNameVisits
1Amy1
2Amy2
3Jake3
4Terry5
5NULLNULL

[코드]

SELECT MAX(visits)
FROM Customers

[결과]
5

참고:
https://www.w3schools.com/sql/sql_count_avg_sum.asp
https://www.w3schools.com/sql/sql_min_max.asp
https://docs.microsoft.com/en-us/sql/t-sql/functions/aggregate-functions-transact-sql?view=sql-server-ver15

profile
데이터 분석을 공부하는 🌱

0개의 댓글