인트로
오늘은 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
'이론 > DB' 카테고리의 다른 글
[DB] 데이터베이스 애트리뷰트 종류(단순, 복합, 유도, NULL) (0) | 2020.03.29 |
---|---|
[DB] 데이터베이스의 1:1, 1:N, N:M 관계 (1) | 2020.03.29 |
[DB] SQLD 35회차 시험 후기 (0) | 2019.12.10 |
[데이터베이스] Indexing - (3) (0) | 2019.06.11 |
[데이터베이스] Indexing - (2) (0) | 2019.06.07 |