CASE문의 경우 개발을 하게 되면 간혹 사용하게 된다. 나도 종종 사용해서 특정 값에 대해 CASE문을 통해 값을 나타내게끔 했다.
오라클에서는 특이하게 DECODE라는 함수를 제공한다.
알클 오라클 유튜브 강의
https://www.youtube.com/watch?v=3Uo3O19pWoE&list=PL4C2AmBC9jOYAQrvie3y5c8GN01KGq5WR&index=22
CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
WHEN 조건3 THEN 결과3
.....
ELSE 결과A ----- 위 모든 조건 만족하지 않을 때, 결과 A를 반환
END
46. 테이블 EMPLOYEES의 FIRST, DEPARTMENT_ID 속성을 이용하여 <예시>와 같이 SQL문을 작성하시오.
DECODE함수 사용
-- DECODE함수를 이용하시오.
-- 부서명은 HR계정의 DEPARTMENTS 테이블을 참조하시오
SELECT
first_name AS "이름",
department_id AS "부서번호",
DECODE(department_id,
10,'Administration',
20,'Marketing',
30,'Purchasing',
40,'Human Resources',
50,'Shipping',
60,'IT',
70,'Public Relations',
80,'Sales',
90,'Executive',
100,'Finance',
110,'Accounting',
120,'Treasury',
130,'Corporate Tax',
140,'Control And Credit',
150,'Shareholder Services',
160,'Benefits',
170,'Manufacturing',
180,'Construction',
190,'Contracting',
200,'Operations',
210,'IT Support',
220,'NOC',
230,'IT Helpdesk',
240,'Government Sales',
250,'Retail Sales',
260,'Recruiting',
270,'Payroll'
) AS "부서"
FROM employees;
SELECT * FROM departments;
47. 테이블 EMPLOYEES의 FIRST_NAME, DEPARTMENT_ID 속성을 이용하여 <예시>와 같이 SQL문을 작성하시오.
(HR계정 샘플 데이터)
SELECT
first_name AS "이름",
department_id AS "부서번호",
CASE
WHEN department_id = 10 THEN 'Administration'
WHEN department_id = 20 THEN 'Marketing'
WHEN department_id = 30 THEN 'Purchasing'
WHEN department_id = 40 THEN 'Human Resources'
WHEN department_id = 50 THEN 'Shipping'
WHEN department_id = 60 THEN 'IT'
WHEN department_id = 70 THEN 'Public Relations'
WHEN department_id = 80 THEN 'Sales'
WHEN department_id = 90 THEN 'Executive'
WHEN department_id = 100 THEN 'Finance'
WHEN department_id = 110 THEN 'Accounting'
WHEN department_id = 120 THEN 'Treasury'
WHEN department_id = 130 THEN 'Corporate Tax'
WHEN department_id = 140 THEN 'Control And Credit'
WHEN department_id = 150 THEN 'Shareholder Services'
WHEN department_id = 160 THEN 'Benefits'
WHEN department_id = 170 THEN 'Manufacturing'
WHEN department_id = 180 THEN 'Construction'
WHEN department_id = 190 THEN 'Contracting'
WHEN department_id = 200 THEN 'Operations'
WHEN department_id = 210 THEN 'IT Support'
WHEN department_id = 220 THEN 'NOC'
WHEN department_id = 230 THEN 'IT Helpdesk'
WHEN department_id = 240 THEN 'Government Sales'
WHEN department_id = 250 THEN 'Retail Sales'
WHEN department_id = 260 THEN 'Recruiting'
WHEN department_id = 270 THEN 'Payroll'
END AS "부서명"
FROM EMPLOYEES;
위의 문장에서는 department테이블의 부서명을 참조하여 위와 같이 case문을 통해 부서명을 표기해 주었다.
보통 실무에서는 department테이블과 employees의 테이블을 JOIN하여 부서명을 표기할 수 있다.
48. 다음 <예시>와 같이 테이블 EMPLOYEES의 사원 수를 구하는 SQL문을 작성하시오. (HR계정 샘플 데이터)
SELECT
COUNT(FIRST_NAME) AS "사원수"
FROM EMPLOYEES;
SELECT COUNT(*) AS "사원 수"
FROM EMPLOYEES;
49.다음 <예시>와 같이 테이블 EMPLOYEES의 최고급여, 최저급여를 구하는 SQL문을 작성하시오. (HR의 샘플 데이터)
SELECT
MAX(salary) AS "최고급여",
MIN(salary) AS "최저급여"
FROM EMPLOYEES;
50. 다음 <예시>와 같이 테이블 EMPLOYEES의 급여합계, 급여평균을 구하는 SQL을 구하시오.(HR의 샘플 데이터)
SELECT
SUM(salary) AS "급여합계",
ROUND(AVG(salary),2) AS "급여평균"
FROM EMPLOYEES;
51. 다음 <예시>와 같이 테이블 EMPLOYEES의 급여표준편차와 급여분산을 구하시오.(HR계정 샘플 데이터)
SELECT
ROUND( STDDEV(salary),2 ) AS "급여표준편차",
ROUND( VARIANCE(salary), 2 ) AS "급여분산"
FROM EMPLOYEES;
*블로그의 내용은 알클님 강의를 기반으로 작성되었습니다!
'SQL공부' 카테고리의 다른 글
ORACLE 오라클 SQL8 - NULL (1) | 2025.01.14 |
---|---|
ORACLE 오라클 SQL 7 - 변환함수, 날짜함수 (0) | 2025.01.14 |
ORACLE 오라클 SQL 5 - 숫자함수 (0) | 2025.01.14 |
ORACLE 오라클 SQL 4 - SELECT 조회(기초) (0) | 2025.01.13 |
ORACLE 오라클 SQL 2 - HR 계정 생성하기 (0) | 2025.01.13 |