멀리 보는 연습

DATABASE_연산자, where, order by, 비교 조건 예제 본문

Study/DATABASE

DATABASE_연산자, where, order by, 비교 조건 예제

푸실리 2021. 5. 23. 19:08

1. where 절 사용

 

* 단일 연산자의 비교 조건

<> (같지않음)은 !=를 쓰기도 한다.

 

* 예제 01

연봉이 150,000 이상인 사원의 이름과 연봉을 구하시오.

단, 이름은 NAME, 연봉은 AnnSal로 출력하시오.

 

SQL> select last_name name, salary*12 "AnnSal"

2 from employees

3 where salary*12 >= 150000;

 

NAME                                                   AnnSal

-------------------------------------------------- ----------

King                                                   288000

Kochhar                                                204000

De Haan                                                204000

Russell                                                168000

Partners                                               162000

Hartstein                                              156000

 

** where 절에는 AnnSal 을 쓸 수 없음

또한 where 절에 사용한 column은 select 절에 모두 포함하여 비교하는 게 이해하기 수월함

 

 

1-1) between A and B  >> A와 B 사이의 값

SQL> select last_name, salary

2 from employees

3 where salary between 2500 and 3500;

 

1-2) A와 B의 범위 이외의 값

1 select last_name, salary*12 "AnnSal"

2 from employees

3* where salary*12 not between 150000 and 200000

 

2) in(set) > set의 값과 일치하는 값

SQL> select employee_id, last_name, salary, manager_id

2 from employees

3 where manager_id in(100, 101, 201);

>> manager_id의 100, 101, 201 은 사수번호

 

3) like >>  특정 정보를 포함한 값

1 select last_name, hire_date

2 from employees

3* where hire_date like '06%'

>> 06년도에 입사한 사원 찾기

 

4) is null  >>  비어있는 값

SQL> select last_name, manager_id

2 from employees

3 where manager_id is null;

 

 

 

1)  AND 연산자 >> 2개의 조건 동시 만족하는 값

1 select employee_id, last_name, job_id, salary

2 from employees

3 where salary >=10000

4* and job_id like '%MAN%'

 

 

 

 

 

1 select last_name, job_id, department_id, hire_date

2 from employees

3* order by hire_date

select last_name, job_id, department_id, hire_date

from employees

order by hire_date desc

 

** column 명을 "annsal"로 변경했다면 order 절도 "annsal"로 입력

1 select last_name, job_id, department_id, salary*12 "annsal"

2 from employees

3* order by "annsal" desc

 

 

 

1 select last_name, department_id, salary

2 from employees

3* order by department_id, salary desc

>> order by 절에서 두개의 열이 오름차순, 내림차순으로 다를 경우,

일단 department_id 에서 오름차순으로 그룹화 된 후, 그 그룹 안에서 salary 내림차순 정렬이 이루어진다.

 

 

*예제01

연봉이 120000 이상 되는 사원들의 이름 및 연봉을 출력하시오.

1 select last_name, salary*12 "AnnSal"

2 from employees

3* where salary*12 >120000

 

*예제02

사원 번호가 176인 사원의 이름과 부서 번호를 출력하시오.

1 select last_name, department_id

2 from employees

3* where employee_id = 176

 

 

*예제03

연봉이 150000에서 200000의 범위 이외인 사원들의 이름 및 연봉을 출력하시오. 단 연봉은 AnnSal로 출력하시오.

1 select last_name, salary*12 "AnnSal"

2 from employees

3* where salary*12 not between 150000 and 200000

 

*예제04

2003/01/01 부터  2005/05/30 사이에 고용된 사원들의 이름, 사번, 고용일자를 출력하시오. 고용일자를 역순으로 정렬하시오.

1 select last_name, employee_id, hire_date

2 from employees

3 where hire_date between '03/01/01' and '05/05/30'

4* order by hire_date desc

 

 

*예제05

20번 및 50번 부서에서 근무하는 모든 사원들의 이름 및 부서 번호를 알파벳 순으로 출력하시오.

SQL> select last_name, department_id

2 from employees

3 where department_id in (20,50)

4 order by last_name asc;

 

 

*예제08

매니저가 없는 사람들의 이름 및 업무를 출력하시오.

SQL> select last_name, job_id

2 from employees

3 where manager_id is null;

 

*예제09

매니저가 있는 사람들의 이름  및 업무, 매니저번호를 출력하시오.

SQL> select last_name, job_id, manager_id

2 from employees

3 where manager_id is not null;

 

 

*예제10

커미션을 받는 모든 사원들의 이름, 연봉 및 커미션을 출력하시오.

연봉을 역순으로 정렬하고, 연봉을 ANNSAL로 출력하시오.

1 select last_name, salary*12 annsal, commission_pct

2 from employees

3 where commission_pct is not null

4* order by salary*12 desc

 

 

*예제11

이름의 네번째 글자가 a인 사원의 이름을 조회하시오.

SQL> select last_name

2 from employees

3 where last_name like '___a%';

 

*예제12

이름에 a 및 e 글자가 있는 사원의 이름을 조회하시오.

1 select last_name

2 from employees

3 where last_name like '%a%'

4* and last_name like '%e%'

 

*예제14

30번 부서 내의 모든 직업들을 유일한 값으로 출력하시오.

90번 부서 또한 포함하고, 직업을 오름차순으로 출력하시오.

 

1 select distinct job_id

2 from employees

3 where department_id in (30,90)

4* order by job_id asc

 

'Study > DATABASE' 카테고리의 다른 글

DATABASE_서브쿼리  (0) 2021.05.31
DATABASE_group by, SQL 구문 실행 순서, having  (0) 2021.05.31
DATABASE_조인  (0) 2021.05.31
DATABASE_명령문  (0) 2021.05.23
DATABASE_용어  (0) 2021.05.23
Comments