일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 들안길삼겹살
- 조건문
- 오라클
- 범어동맛집
- 대명동맛집
- 앞산카페
- SQL
- oracle
- 백준
- 대구고깃집
- 수성구데이트
- programmers
- 압구정데이트
- 대구데이트
- 정렬
- 별찍기
- C#
- 큐
- 서울맛집
- 대구삼겹살
- 안지랑카페
- 브루트 포스
- 수성못맛집
- 수성못삼겹살
- 반복문
- 대구카페
- 프로그래머스
- BFS
- 대구맛집
- 수성구맛집
- Today
- Total
모든 일상
2일차 예제문제 본문
EX1. 현재 날짜를 표시하는 질의를 작성하고 열 레이블을 Date로 지정한다.
select sysdate
as Date
from dual;
EX2. 사원 번호, 이름, 급여 및 15% 인상된 급여를 정수로 표시하고 열 레이블을 New salary 로 한다.
select employee_id, last_name, salary, trunc(salary + (salary * 0.15),0) as "New salary"
from emp;
EX3. 급여 인상분(새 급여에서 이전 급여를 뺀 값)을 추가하도록 수정하고 열 레이블을 Increase로 지정한다.
select last_name, salary, (trunc(salary + (salary * 0.15),0)-salary) as "Increase"
from emp;
EX4. 사원 이름, 입사일 및 급여 검토일을 표시한다.
급여 검토일은 여섯 달 근무 후 해당하는 첫 번째 월요일입니다.
열 레이블은 REVIEW로 지정하고 날짜는 "yyyy-mm-dd"과 같은 형식으로 표시되도록 지정합니다.
select last_name, hire_date,
to_char(next_day(add_months(hire_date,6),2), 'yyyy-mm-dd') as REVIEW
from emp ;
EX5. 사원의 이름, 근무월수(입사일로부터 현재까지 월수)를 계산하며 열레이블을 MONTHS_WORKED로 지정합니다.
결과는 정수로 반올림하여 표시하고 오래 근무한 사원부터 출력하시오.
select last_name, hire_date,
round(months_between(sysdate, hire_date),0) as "MONTHS_WORKED"
from emp
order by months_between(sysdate, hire_date) desc ;
EX6. 각 사원에 대해 다음 항목을 생성하는 질의를 작성합니다.
<employee name> earns <salary> monthly but wants <3 times salary>.
열 레이블을 “Wanted wage“로 지정합니다.
출력예 : King earns 24000 monthly but wants 72000
select last_name || ' earns ' || to_char(salary, '$999,999')
|| ' monthly but wants ' || to_char(salary * 3, '$9,999,999') as "Wanted wage"
from emp ;
EX7. 모든 사원의 이름 및 급여를 표시하는 질의를 작성합니다,
급여는 15자 길이로 왼쪽에 $ 기호가 붙는 형식으로 표기하고 열 레이블은 salary 로 지정합니다.
select last_name, lpad(to_char(salary, '$99,999'), 15, ' ') as salary
from emp;
EX8. 이름이 J, A 또는 M으로 시작하는 모든 사원의 이름(첫 글만 대문자로) 및 이름 길이를 표시하시오.
sol 1)
select initcap(last_name), length(last_name)
from emp
where last_name like 'J%' or last_name like 'A%' or last_name like 'M%'
order by last_name;
sol 2)
select initcap(last_name), length(last_name)
from emp
where substr( last_name, 1, 1) in ('J', 'M', 'A')
order by last_name;
->2번 솔루션이 더 효과적임
EX9. 이름, 입사일 및 업무 시작 요일을 표시하고 열 레이블을 DAY로 지정합니다.
일요일 ~ 토요일 순으로 정렬
select last_name,hire_date, to_char(hire_date, 'day') as Day
from emp
order by to_char(hire_date , 'd');
EX10. 사원 이름 및 급여와 커미션합계를 표시하는 질의를 작성합니다. 열이름은 TOTAL 로 지정한다.
커미션을 받으면 사원은 'Yes'으로 표시하고, 아니면 'No'로 표시하고
열 레이블은 COMMISSION으로 지정합니다.
select last_name, nvl2(commission_pct, 'Yes', 'No') as COMMISSION,
salary + (salary * nvl(commission_pct,0)) as TOTAL
from emp;
EX11. 사원의 이름을 표시하고 급여 총액을 별표(*)로 나타내는 질의를 작성합니다.
각 별표는 1000달러를 나타냅니다.
급여 기준으로 데이터를 내림차순으로 정렬하고 열 레이블을 EMPLOYEE_GREAD 로 지정합니다.
출력 예 :
Hunold 9000 *********
Ernst 6000 ******
Austin 4800 ****
select last_name ||' '|| salary ||' '|| lpad(' ',salary/1000 +1,'*') as "EMPLOYEE_GREAD"
from emp;
EX12. 사원의 이름, 직무, 직무 열의 값을 기준으로 모든 사원의 등급을 표시하는 질의를 작성합니다.
job_id 가 'CLERK'로 끝나면 => '☆'
'REP'로 끝나면 => '☆☆'
'MAN'로 끝나면 => '☆☆☆'
그 밖은 공백으로 표시하시오. 열 레이블은 "GRADE"로 지정합니다.
출력 예 :
Johnson SA_REP ☆☆
Taylor SH_CLERK ☆
sol 1)
select last_name,job_id,
decode(substr(job_id,instr(job_id,'_')+1), 'CLERK', '☆',
'REP', '☆☆',
'MAN', '☆☆☆',
' ')
as Grade
from emp
sol 2)
select last_name, job_id,
case
when job_id like '%CLERK' then '☆'
when job_id like '%REP' then '☆☆'
when job_id like '%MAN' then '☆☆☆'
else
' '
end as Grade
from emp
order by 3;