코딩 공부/SQL

ORACLE 문제 풀이[1]

유미._. 2023. 5. 8. 18:47
728x90

 

 

문제 1)

사원번호, 이름, 월급을 출력하시오.

select empno,ename,sal from emp;

 

문제 2)

이름 월급 직업 입사일을 출력하시오.

select ename,sal,,job,hiredate from emp;

 

※ NVL 함수

값 대신에 다른 값을 출력하고 싶을때 사용하는 함수

 

문제 3)

이름, 월급, 커미션, 월급 + 커미션을 출력하시오.

select ename, sal, nvl(comm,0) as comm, sal+comm as sal_comm from emp;

 

※ AS 별칭

as는 별칭을 쓸때 사용하며 생략 가능하다.별칭을 소문자로 써도 대문자로 인식하는데, " "를 해주면 대소문자를 구분한다.

 

※더블쿼테이션 마크를 사용하는 경우

1. 컬럼 별칭에 대소문자를 구분하고자 할때

2. 컬럼 별칭에 특수문자를 넣고자 할때

 

문제 4)

사원이름과 월급을 출력하는데, 이름의 컬럼명을 employee라고 하고 월급의 컬럼명을 salary라고 하시오.

select ename as employee,sal as salary from emp;

 

문제 5)

사원이름과 입사일을 출력하는데 사원이름의 컬럼명이 employee name으로 출력되게 하시오. 

select ename as employee_name , hiredate from emp;

 

문제 6)

직업을 출력하시오.

select distinct job from emp;

 

- 설명

distinct : 중복제거 키워드

 

문제 7)

부서번호를 출력하는데 중복제거해서 출력하시오.

select distinct deptno from emp;

 

문제 8)

사원번호가 7788번인 사원의 사원번호와 이름을 출력하시오.

select empno,ename from emp where empno=7788;

 

문제 9)

월급이 3000인 사원들의 이름과 월급을 출력하시오.

select ename,sal from emp where sal =3000;

 

※ 문자 및 날자형 데이터숫자형 데이터는 관계없지만, 문자와 날자형 데이터는 양쪽에 싱클쿼테이션 마크를 사용해야한다.

  

※ 연산자의 종류

1. 산술 연산자 : * / + -

2. 비교 연산자 :>, <, <=, >=, =, !=, <>, ^= (같지 않음 연산자는 뒤에서부터 3개의 표현이 존재)

3. 논리 연산자 : and, or, not

 

문제 10)

이름이 scott인 사원의 이름과 직업을 출력하시오.

select ename,job from emp where ename = 'scott';

 

문제 11)

월급이 3000 이상인 사원들의 이름과 월급을 출력하시오.

select ename,sal from emp where sal >= 3000;

 

문제 12)

직업이 SALESMAN이 아닌사원들의 이름과 직업을 출력하시오.

select ename,job from emp where job != 'SALESMAN';

 

문제 13)

월급이 1000에서 3000 사이인 사원들의 이름과 월급을 출력하는데, 컬럼명을 Employee, Salary로 출력하시오.

select ename as Employee ,sal as Salary from emp

where sal between 1000 and 3000;

 

- 설명

between A and B : A이상 B이하 사이의 데이터

 

※ order by 절

쿼리의 결과를 정렬하는 절로써 가장 마지막 순서에 위치한다.

ascending, descending (asc=오름차순, desc=내림차순)

 

문제 14)

사원이름과 월급을 출력하는데 월급이 낮은 사원부터 높은 사원순으로 출력하시오.

select ename,sal from emp

order by sal;

 

문제 15)

이름과 입사일을 출력하는데 가장 최근에 입사한 사원부터 출력하시오.

select ename,hiredate from emp

order by hiredate desc;

 

문제 16)

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

select ename,sal,job from emp

where job = 'SALESMAN'

order by sal desc;

 

문제 17)

월급이 1000 이상인 사원들의 이름과 월급을 출력하는데 월급이 낮은 사원부터 높은 사원순으로 출력하시오.

select ename,sal from emp

where sal >= 1000

order by sal;

 

※ SQL의 내부적 실행 순서from -> where -> select -> order by 순서로 실행된다.order by절에서 별칭 사용 가능, where 절에서 별칭 사용 불가능

 

문제 18)

연봉(셀러리*12)이 36000 이상인 사원들의 이름과 연봉을 출력하고 컬럼명의 별칭은 "연봉"으로 하시오.

select ename,sal*12 as 연봉 from emp

where sal*12 >= 36000;

 

※ 기타 비교 연산자

1. between ..and

2. like

3. in

4. is null

 

문제 19)

월급이 1000에서 3000사이가 아닌 사원들의 이름과 월급을 출력하시오.

select ename,sal from emp

where not sal between 1000 and 3000;

 

※ 와일드 카드

%(퍼센트)는 wild card : 해당하는 자리에 무엇이 와도 관계없다는 의미._(언더바)는 자릿수를 의미 함 : 해당하는 자리에 무엇이 와도 관계없다는 의미.(자릿수는 언더바의갯수에 관계)

 

문제 20)

이름의 첫 글자가 s로 시작하는 사원들의 이름을 출력하시오.

select ename from emp

where ename Like 'S%'; select ename,job from emp where job != 'SALESMAN';

 

 

 

 

 

728x90
반응형

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

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