Database/Basic

집합(그룹) 함수-sum,avg,max,min,count,rank + GROUP BY , HAVING

Y_____527 2021. 2. 8. 00:29

1.SUM(컬럼명) -> 합계

1
2
3
--1)sum(컬럼명) => 합계
select * from gift;
select sum(g_start) "시작값 합계", sum(g_end)  "최대값 합계"from gift;
cs

2.AVG(컬럼명) ->평균

3.MAX(컬럼명) ->최대값

4.MIN(컬럼명) ->최소값

1
2
select max(g_start), min(g_start), avg(g_start) from gift;
 
cs

5.COUNT(컬럼명) -> null값 제외한 총 레코드 수 

6.COUNT(*) -> null값 포함한 총 레코드 수 

1
2
3
4
5
6
7
--5)count(컬럼명) => 총 레코드수(null값은 제외함)
--6)count(*) => null을 포함한 총 레코드수
select * from professor;
 
select count(*from professor; --null 포함 O
select count(hpage) from professor; --null 포함 X
select count(gno) from gift;
cs

7. RANK( ) WHITHIN GROUP(ORDER BY 컬럼명 ASC또는 DESC) -> 등수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--7)rank(expr) whithin group(order by 컬럼명 asc | desc )
/*
ex) --급여가 3000의 등수 구하기
     SELECT RANK(3000) within GROUP(ORDER BY sal desc)
     FROM EMP;
*/
select * from gift;
select rank(600000) within group(order by g_end desc) from gift;
--==>600000이라는 값이 g_end를 내림차순(desc)로 봤을 때, 몇등인가?
--==>null값이 우선순위로 포함됨
 
select rank(600000) within group(order by g_end desc) 
    from gift
    where g_end is not null;
--==>null제외하고 등수 메기기
cs

GROUP BY 

  • 그룹(집합)함수와 일반필드는 같이 쓸수 없다
  • 특정컬럼을 기준으로 group by하여 각 그룹별 집계함수를 사용 가능
  • =>일반필드를 그룹화 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--<집계함수 사용시 Group by>
select* from student;
 
--그룹(집합)함수와 일반필드(grade)는 같이 쓸수 없다 
select grade, sum(height), avg(height), max(height), min(height)
    from student;
--=>특정컬럼 기준으로 group by 를 하여 각 그룹별 집계함수를 사용 수 있다.
--=>일반필드를 그룹화 시킨다. 
 
select sum(height), avg(height), max(height), min(height)
    from student; --전체데이터의 부분합과 평균,,
    
select grade, sum(height), avg(height), max(height), min(height)
    from student
    group by grade ; --부분합(소계), 학년별의 부분합과 평균,,
    
select grade, sum(weight), avg(weight), max(weight), min(weight)
    from student
    group by grade ;
cs

HAVING -> group by의 조건절 

1
2
3
4
5
6
7
8
9
10
11
12
--조건: where, having 절 이용한다
--group by 조건을 사용하는 것은 having절 이용 
select grade, sum(height), avg(height), max(height), min(height)
    from student
    group by grade 
    having avg(height) > 173--조건추가 
    
select grade, sum(weight), avg(weight), max(weight), min(weight)
    from student
    group by grade 
    having avg(weight) > 58;
    
cs