5-1 Aggregate Functions
✅집계함수
데이터베이스 시스템은 다섯 개의 집계함수를 지원한다.
- avg: average value
- min: minimum value
- max: maximum value
- sum: sum of values
- count: number of values
✅Group by
전체 테이블을 특정 속성 값으로 터플을 분류하고, 나누어진 각 그룹에 대하여 집계 함수를 적용하고자 하는 요구가 있으며, 이러한 역할을 하는 것이 "group by"절이다.
group by절을 사용할 때 주의해야 할 사항이 있다.
바로, group by절에 나온 속성과 집계함수만이 select 절에 나올 수 있다.
아래의 예시를 통해 자세히 알아보자.
/* 틀린 예시 */
Select deptName, pID, avg(salary)
from professor
group by deptName;
위의 예시가 틀린 이유는 그룹당 deptName과 집계함수 값이 생성되는 것에 반하여 pID 값은 그룹 수보다 많이 존재하게 되고, 이 경우 보여주어야 하는 pID 값을 선정할 수 없기 때문이다.
Select avg(salary)
from professor
group by deptName;
추가로, group by 절에 나오는 속성은 select 절에 나오는 것이 좋으나 반드시 나와야 하는 것은 아니다.
다만 위의 예제의 경우 각 그룹에 대한 salary 평균값만 사용자에게 보이게 되며, 어떤 그룹에 대한 평균값인지는 사용자가 알 수 없다.
✅Having
having절은 group by절 결과로 생성된 그룹에 대하여 임의 조건을 명시하는데 사용된다.
Select deptName, avg(salary)
from professor
group by deptName
having avg(salary) > 6900;
위의 예제를 통해 알아보자면, professor 테이블을 deptName을 기준으로 그룹을 만들고, 각 그룹에 대하여 avg(salary) > 6900 조건을 만족하는 그룹에 한하여 select절이 deptName과 salary의 평균 값을 보인다.
* where절과 헷갈리면 안된다.
where절 조건은 각 터플에 적용하여 조건을 만족하는 터플이 다음 단계로 이관되는 것이고,
having절 조건은 각 그룹에 적용하여 이를 만족하는 그룹이 다음 단계로 이관되는 것이다.
만약, 두 개의 절이 동시에 select 문장에 존재한다면, where절이 먼저 적용되고, 그 후에 생성된 그룹에 대하여 having절 조건이 적용된다.
'3-2 학기 > Database' 카테고리의 다른 글
[데이터베이스] Ch10 ER model (0) | 2024.11.27 |
---|---|
[데이터베이스] Ch6 RDB functionalities (0) | 2024.11.27 |
[데이터베이스] Ch3 SQL I (1) | 2024.10.12 |
[데이터베이스] Ch2 Relational Data Model (2) (1) | 2024.10.09 |
[데이터베이스] Ch2 Relational Data Model (1) (1) | 2024.10.08 |