-- 예제4-1:employees테이블에서 last_name을 소문자와 대문자로 각각 출력하고, email의 첫 번째 문자는 대문자로 출력하세요.
SELECT last_name,
LOWER(last_name),
UPPER(last_name),
email,
INITCAP(email)
FROM employees;

-- 예제4-2:employees테이블에서 job_id데이터 값의 첫째 짜리부터 시작해서 두개의 문자를 출력
SELECT job_id, SUBSTR(job_id,1,2)
FROM employees;

-- 4-3:job_id문자열 값이 ACCOUNT면 ACCNT로 출력
SELECT job_id,REPLACE(job_id, 'ACCOUNT', 'ACCNT')
FROM employees;

-- 4-4:first_name에 대해 12자리의 문자열 자리를 만들되 first_name의 데이터 값이 12자리보다 작으면 왼쪽부터 *를 채워서 출력
SELECT first_name, LPAD(first_name, 12, '*')
FROM employees;

-- 4-5:job_id의 데이터 값에 대해 왼쪽 방향부터 'F'문자를 만나면 삭제하고 오른쪽 방향부터 'T'를 만나면 삭제
SELECT job_id,
LTRIM(job_id, 'F'),
RTRIM(job_id, 'T')
FROM employees;

-- 4-13:salary에 commission_pct를 곱하되 commission_pct가 null일때는 1로 치환
SELECT salary * NVL(commission_pct,1)
FROM employees
ORDER BY commission_pct;

-- 4-14:first_name,last_name,department_id,salary출력하되,
-- department_id가 60인 경우에는 급여를 10%인상한 값 출력, 나머지는 원래 값
-- department_id가 60인 경우 '10%인상'출력, 나머지는 '미인상'
SELECT first_name,
last_name,
department_id,
salary 원래급여,
DECODE(department_id, 60, salary*1.1, salary) 조정된급여,
DECODE(department_id, 60, '10%인상', '미인상') 인상여부
FROM employees;

-- 4-15:job_id가 IT_PROG라면 employee_id, first_name, last_name, salary출력
-- salary가 9000이상이면 '상위급여', 6000과 8999사이면 '중위급여', 그 외는 '하위급여' 출력
SELECT employee_id, first_name, last_name, salary,
CASE
WHEN salary >= 9000 THEN '상위급여'
WHEN salary BETWEEN 6000 AND 8999 THEN '중위급여'
ELSE '하위급여'
END AS 급여등급
FROM employees
WHERE job_id = 'IT_PROG';

-- 4-16:salary값이 높은 순서대로 순위 매겨 출력
SELECT employee_id,
salary,
RANK()OVER(ORDER BY salary DESC) RANK
FROM employees;

-- 4-17:departmend_id안에서 salary값이 높은 순서대로 순위 매겨 출력
SELECT A.department_id, B.department_name, salary,
RANK() OVER(PARTITION BY A.department_id ORDER BY salary DESC) RANK_급여
FROM employees A, departments B
WHERE A.department_id = B.department_id
ORDER BY B.department_id, A.salary DESC;
