김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩공부 #자바공부
  • 코딩
  • 자바공부
  • httperror
  • web.xml수정
  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • HTML공부
  • 객체지향프로그래밍
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 풀스택
  • 자바
  • 개발자
  • ErrorPage
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • 백앤드
  • 코딩공부
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • http에러메세지
  • 프론트앤드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Oracle DB/: 기본 익히기

[Oracle] #3-5 having 조건절, CASE WHEN ~ THEN END 구문

2022. 8. 23. 12:38

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
    '⁂ Oracle DB/: 기본 익히기' 카테고리의 다른 글
    • [Oracle] #4-2 Oracle에서 자주 쓰이는 함수 모음
    • [Oracle] #4-1 서브쿼리
    • [Oracle] #3-4 데이터 가공하기 : distinct, group by, 집계함수
    • [Oracle] #3-3 자료형과 제약 조건
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바