코딩 공부/SQL

ORACLE 문제 풀이[3]

유미._. 2023. 5. 10. 19:48
728x90

 

 

문제 041)

아래의 쿼리 결과를 출력하시오. (사진)
select ename, substr(ename,1,3) as substr from emp;

문제 042)

이름의 첫번째 철자만 출력하는데 소문자로 출력되게 하시오
select lower(substr(ename,1,1)) as name from emp;

문제 043)

upper, lower, substr, || 를 사용해서 아래와 같은 결과를 출력하시오.
select initcap(ename) as name from emp;

문제 044)

이름에 M자를 포함하고있는 사원들의 이름과 월급을 출력하시오.
select ename,sal from emp
where ename like '%M%';

문제 045)

이름에 EN 또는 IN을 포함하고 있는 사원들의 이름과 입사일을 출력하는데 최근에 입사한 순서로 출력하시오.
select ename,hiredate from emp
where ename like '%EN%'  
union
select ename,hiredate from emp
where ename like '%IN%' 
order by hiredate desc;

문제 046)

직업이 SALESMAN인 사원들의 사원 이름과 직업과 월급을 출력하는데 월급이 높은 사원부터 출력하시오. 

select ename,job,sal from emp
where job ='SALESMAN'
order by sal desc;

 

- 설명

오라클 내부 순서는 from, where, select, order by 순으로 진행된다.

이 진행 순서에 따라서 as 별칭을 인식하고 못하는 절 이 있다.

문제 047)

이름의 첫글자가 A로 시작하는 사원들의 이름과 월급과 직업을 출력하시오. 
select ename,sal,job from emp
where ename like 'A%';

문제 048)

월급이 1000에서 3000 사이인 사원들의 이름과 월급과 입사일을 출력하는데, 입사일을 먼저 입사한 사원부터 출력되게 하시오.
select ename,sal,hiredate from emp
where sal between 1000 and 3000
order by hiredate;

문제 049)

1981년도에 입사한 사원들의 이름과 입사일을 출력하시오. 
select ename,hiredate from emp
where hiredate like '81/__/__';


문제 050)

이름에 M자를 포함하고 있는 사원들의 이름을 출력하시오. 

select ename from emp
where ename like '%M%'; 

 

- 설명

단일행함수 : 문자, 숫자, 날짜, 변환, 일반

복수행 함수 : MAX, MIN, AVG, SUM, COUNT

문자 함수 : upper, lower, initcap, substr, instr, lpad, rpad, trim, replace

문제 052)

instr 함수를 이용해서 이름에 A자를 포함하고 있는 사원들의 이름을 출력하시오. 
select INSTR(ename,'A',1,10) from emp;


문제 053)

아래의 데이터를 EMP 테이블에 입력하고, 이름이 JACK인 사원의 이름과 월급을 출력하시오.

" insert into emp(empno, ename, sal) values(1238, 'JACK    ', 4000); "

select ename,sal from emp where ename like 'JACK';


 - 설명

trim : 양쪽의 공백을 자른다.

rtrim : 오른쪽의 공백을 자른다.

ltrim : 왼쪽으로 공백을 자른다.
 

문제 054)

이름과 월급을 출력하는데 월급을 전체 10자리로 출력하고 나머지 자리는 *로 출력하시오.

select ename, RPAD(sal, 10, '*') as sal from emp;

문제 055)

이름과 월급을 출력하는데 월급을 전체 10자리로 출력하고 나머지 자리는 공백으로 출력하시오.  
select ename, RPAD(sal, 10, ' ') as sal from emp;

문제 056)

length 함수를 이용해서 이름과 이름의 철자의 갯수를 출력하시오. 

select ename, length(ename) as ename_1 from emp;


- 설명

length : 문자열의 길이를 세는 함수

문제 057)

이름, 입사한 날짜부터 오늘까지 총 몇일 근무했는지 소수점 뒤에는 잘라서 출력하시오.
 

※ 숫자 함수의 종류(round, trunc, mod)


1. round : 반올림하는 함수(지정한 자릿수까지 반올림해서 표시)

select 756.89, round(756.89, 1) from dual;

(왼쪽부터 -3, -2, -1, 0, 1) (임시적인 결과를 보기 위한 가상 테이블 dual) 

2. trunc : 그냥 버리는 함수(지정한 자릿수까지 버림해서 표시)

select 756.89, trimc(756.89, 1) from dual;

3. mod : 나누기 연산 후 나머지 값

select 756.89, mod(756.89, 1) from dual; 


문제 058)

이름, 입사한 날짜부터 오늘까지 총 몇달 근무했는지 소수점 뒤에는 잘라서 출력하시오.

 

- 설명
오늘 날짜 확인하는 방법

select sysdate from dual;

※ 날짜함수
1. months_netween : 날짜와 날짜 사이의 개월수 출력
날짜 + 날짜 = 날짜날짜 - 숫자 = 날짜날짜 - 날짜 = 숫자
2. add_months : 날짜에서 개월수를 더한 날짜
3. next_day : 지정된 날짜에서 앞으로 돌아올 요일의 날짜를 출력
4. last_day : 지정된 날짜에서 마지막 날짜를 출력

문제 059)

오늘부터 100달 뒤의 날짜를 출력하시오.
select sysdate, 
ADD_MONTHS(sysdate,100) from emp;

 

문제 060)

오늘부터 앞으로 돌아올 월요일의 날짜를 출력하시오. 
select sysdate, 
next_day(sysdate,'월요일') from emp; 

 

 

 

 

 

 

728x90
반응형

'코딩 공부 > SQL' 카테고리의 다른 글

DataBase - ON DELETE CASCADE 이해하기  (0) 2023.05.14
ORACLE 문제 풀이[4]  (0) 2023.05.11
ORACLE 문제 풀이[2]  (0) 2023.05.09
ORACLE 문제 풀이[1]  (0) 2023.05.08
SQL 초기 설정 (Oracle)  (0) 2023.04.12