본문 바로가기

이론/DB

[DB][SQL] 집계함수(COUNT, SUM, AVG, MAX, MIN)

인트로

오늘은 SQL의 집계함수와, 그 예시를 알아보려고 합니다.

1. 집계함수

- 집계함수의 정의 

- 집계함수 SQL 예시

 

1-1) 집계함수 (aggregate function)

집계함수 : COUNT , SUM , AVG, MAX, MIN 

튜플에 관심있는 것이 아니라 몇개의 튜플에 관심이 있는 경우, 집계함수를 사용한다.  
집계함수와 일반 애트리뷰트를 같이 출력할 수 없다.

다음은 집계함수들의 리스트입니다.

  • COUNT : 결과 행들의 개수를 구한다. (중복된 값도 모두 COUNT)
  • SUM : 결과 행들의 합을 구한다.
  • AVG : 결과 행들의 평균을 구한다. 
  • MAX : 결과 행들 중 MAX값을 출력한다.
  • MIN : 결과 행들 중 MIN값을 출력한다.

 

1-2 ) 집계함수 예시 
i) 학생 테이블의 전체 튜플의 개수가 몇개인지 출력하자.

  SELECT COUNT(*) AS 학생수  FROM STUDENT;  

 

ii) 중복을 제거하지 않은 cno 의 튜플의 개수 출력하자.

   SELECT COUNT(cno) AS 학생수  FROM STUDENT; 

 

iii) 등록테이블에 학번이 300인 학생의 unique한 과목 수는 몇개인가 ? (중복 제거)  

  SELECT COUNT(DISTINCT Cno) FROM ENROL WHERE Sno = 300;  
  SELECT DISTINCT Cno from enrol;  


iv) 등록테이블에서 과목번호가 C413인 과목의 중간교사의 평균을 구하라.

  SELECT AVG(Midterm) AS 중간평균  FROM ENROL WHERE Cno = ‘C413’;  

 

v) 등록테이블에서 과목번호가 'DB'인 과목의 기말고사의 평균을 구하라.  

  SELECT count(distinct sno), avg(final) from enrol where cno = 'DB';  
  SELECT cno, count(*), avg(final) FROM  enrol GROUP BY cno 

 

+) 학점(grade)가 문자열이여서 avg를 구할 수 없는 경우

  SELECT count(distinct sno), avg(grade) from enrol where cno = 'DB';  

이 경우 결과가 0으로 나옵니다.

 

vi) 2학년 학생들이 수강하는 과목들의 과목 번호, 과목명 , 기말고사 최대/최소값을 과목번호 순으로 구하여라.  

  SELECT  e.cno, e.ename , MIN(final), MAX(final)   
  FROM enrol e, student s     
  WHERE e.sno = s.sno AND s.year = 2   
  GROUP BY cno ORDER BY cno DESC   

 

[1] SQL 조인에 대해서 알아보러 가기

 

[DB][SQL][1번째 이야기] SQL 조인, 셀프조인

인트로 오늘은 조인과 셀프조인의 정의와 이들의 SQL구문을 알아보겠습니다. 필자가 대학교 강의를 수강할 때도, 처음 머릿속에 SQL 구문과 그 결과를 집어넣는 일은 쉽지 않았습니다. SQL은 많이 짜보고 그 결과..

life-with-coding.tistory.com