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 |