1. having 조건절
having 조건절은 DB를 다루는 사람들에겐 가장 기본적인 조건절이다.
지금까지 배웠던 where 조건절처럼 having도 하나의 조건절이다.
이 having 조건절은 group by와 같이 사용하는 조건절이다.
즉, 그룹화를 하고 난 후에 조건절을 추가하는 것이다.
형식은 where 조건절과 마찬가지로 having + 조건절이다.
-- 주소별 인원수를 조회하시오
select addr, count(*)
from sungjuk
group by addr;
-- 주소별 인원수가 3인 행을 조회하시오
select addr, count(*)
from sungjuk
group by addr
having count(*)=3;
-- 주소별 인원수가 3 이상인 행을 조회하시오
select addr, count(*)
from sungjuk
group by addr
having count(*)>=3;
아래의 문제를 풀어보며 having절을 잘 사용해보자.
문제 1) 주소별 국어평균값이 50이상 행을 조회하시오.
(단, 평균값은 소수점없이 반올림)
select addr 주소, round(avg(kor),0) avg_kor
from sungjuk
group by addr
having round(avg(kor),0)>50
order by round(avg(kor),0);
문제 2) 평균(aver)이 70이상 행을 대상으로 주소별 인원수를 구한 후 그 인원수가 2미만 행을 인원수 순으로 조회하시오.
select addr, count(*)
from sungjuk
where aver>=70
group by addr
having count(*)<2;
2. CASE WHEN ~ THEN END 구문
이 구문은 자바의 if 문과 비슷한 구문이다.
조건을 주고 그것이 만족하면 계속 값을 수행한다.
만족을 하지 않으면 else 값을 수행한다.
형식)
CASE WHEN 조건1 THEN 조건만족시 값1
WHEN 조건2 THEN 조건만족시 값2
WHEN 조건3 THEN 조건만족시 값3
...
ELSE 값
END 결과컬럼명
한번 사용해보자.
select uname, addr, case when addr='Seoul' then '서울'
when addr='Jeju' then '제주'
when addr='Suwon' then '수원'
when addr='Busan' then '부산'
end as juso
from sungjuk;
이제 case when ~ then end 구문으로 학점을 출력해보자.
-- 문7)이름, 국어, 학점을 조회하시오
-- 학점 : 국어점수 90이상 'A학점'
-- 80이상 'B학점'
-- 70이상 'C학점'
-- 60이상 'D학점'
-- 나머지 'F학점'
1)
select uname, kor, case when kor>=90 then 'A학점'
when kor>=80 then 'B학점'
when kor>=70 then 'C학점'
when kor>=60 then 'D학점'
else 'F학점'
end as grade
from sungjuk;
2)
select uname, kor, case when kor>=90 then 'A학점'
when kor>=80 then 'B학점'
when kor>=70 then 'C학점'
when kor>=60 then 'D학점'
else 'F학점'
end as 국어학점
from sungjuk;
3) between ~ and 연산자
select uname, kor, case when kor between 90 and 100 then 'A학점'
when kor between 80 and 89 then 'B학점'
when kor between 70 and 79 then 'C학점'
when kor between 60 and 69 then 'D학점'
else 'F학점'
end as grade
from sungjuk;
4) 국어 학점 순으로 정렬하기
select uname, kor, case when kor>=90 then 'A학점'
when kor>=80 then 'B학점'
when kor>=70 then 'C학점'
when kor>=60 then 'D학점'
else 'F학점'
end as 국어학점
from sungjuk
order by 국어학점;
'⁂ Oracle DB > : 기본 익히기' 카테고리의 다른 글
[Oracle] #4-2 Oracle에서 자주 쓰이는 함수 모음 (0) | 2022.08.23 |
---|---|
[Oracle] #4-1 서브쿼리 (0) | 2022.08.23 |
[Oracle] #3-4 데이터 가공하기 : distinct, group by, 집계함수 (0) | 2022.08.22 |
[Oracle] #3-3 자료형과 제약 조건 (0) | 2022.08.22 |
[Oracle] #3-2 시퀀스 (0) | 2022.08.22 |