문제 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;
'코딩 공부 > 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 |