성장 기록 블로그🌴
#데이터베이스 실습 3일차 코드 ( where절, 조건절 연산자, 조건 추가 연산자, NOT 연산자 , 연산자 우선순위 , ORDER BY절 본문
#데이터베이스 실습 3일차 코드 ( where절, 조건절 연산자, 조건 추가 연산자, NOT 연산자 , 연산자 우선순위 , ORDER BY절
wlswls2s 2022. 9. 13. 09:59

# 3일차
Q. 연봉이 150000이상인 사원의 이름과 연봉을 출력하시오.
( 단, 이름은 NAME , 연봉은 AnnSal로 출력하시오 )
< 잘못된 코드 > - 열 별칭을 조건식에 사용X
select last_name, salary*12 as annsal from employees where annsal >150000 |
=> 오류 발생 |
=> 열별칭을 조건에 쓸 수 없음 |

< 조건식 – 열별칭 사용X >
Q. 연봉이 150000이상인 사원의 이름과 연봉을 구하시오.
( 단, 이름은 NAME , 연봉은 AnnSal로 출력하시오 )
select last_name as name , salary*12 "AnnSal" from employees where salary*12 >= 150000 |
|

< between A and B 연산자 >
Q. 급여가 2500에서 3500 사이를 갖는 사원의 이름과 급여를 구하시오.
select last_name , salary from employees where salary between 2500 and 3500 |

< IN 연산자 사용 >
Q. 관리자 번호가 100번, 101번 , 201번인 사원의 사원번호, 이름 , 급여 , 관리자번호를 출력하시오.
select employee_id , last_name , salary , manager_id from employees where manager_id IN (100,101,201) |

< Like 연산자 사용 1 > - 이름
Q. 성이 S로 시작하는 사원의 성과 이름을 출력하시오.
select first_name, last_name from employees where first_name LIKE 'S%' |

< Like 연산자 사용 2 > - 날짜
Q. 2006년에 입사한 사원의 이름과 입사일을 구하시오.
select last_name , hire_date from employees where hire_date LIKE '06%' |

Q. 사원의 이름 중 두 번째 글자에 문자 ‘o’ 가 들어간 사원의 이름을 출력하시오. (LIKE 연산자 )
select last_name from employees where last_name LIKE '_o%’ |

Q. 관리자번호가 널인 사원의 이름을 출력하시오. (NULL)
select last_name , manager_id from employees where manager_id IS NULL |

Q. 90번 부서에 근무하는 사원 중 급여가 15000이상인 사원의 이름과 급여를 출력하시오. ( 다중조건)
select last_name , salary from employees where department_id = 90 and salary >= 15000 |

Q. 급여가 10000 이상인 사원들 중에서 직업명이 MAN을 포함한 사원의 번호, 이름 , 직업명, 급여를 표시하시오. (where절 - AND 연산자 사용)
select employee_id , last_name , job_id , salary from employees where salary >=10000 and job_id LIKE '%MAN%' |

Q. 급여가 10000 이상이거나 직업명이 MAN을 포함한 사원의 번호, 이름 , 직업명, 급여를 표시하시오. (where절 - OR 연산자 사용)
select employee_id , last_name , job_id , salary from employees where salary >=10000 or job_id LIKE '%MAN%' |

Q. 급여가 15000인 사원들 중 직업명이 AD인 사원들 먼저 찾고 다음으로 SA인 직업명을 추가로 찾으시오! (연산자 우선순위 규칙 AND> OR )
select last_name , job_id , salary from employees where job_id = 'SA_REP' OR job_id = 'AD_PRES' AND salary > 15000 |
|
=> 절대로 직업명이 SA나 AD인 학생을 찾고 급여가 15000이상인 사원을 찾는 것이 아니라 15000 급여가 큰 사원들 중에서 AD인 사원을 찾고 그 다음으로 SA인 직업을가진 사원을 추가로 찾아라. 이거임. |

< 실습 문제 >
Q1. 연봉이 120000 이상이 되는 사원들의 이름, 연봉 출력하시오.
select last_name , salary*12 from employees where salary*12 >=120000 |

Q2. 사원번호가 176인 사원의 이름과 부서번호를 출력하시오.
select last_name , department_id from employees where employee_id = 176 |

Q3. 연봉이 150000~200000 범위 이외인 사원들의 이름 및 연봉을 출력하시오.
(단, 연봉은 AnnSal로 출력 )
select last_name , salary*12 "AnnSal" from employees where salary*12 between 150000 and 200000 |

Q4. 2003/01/01 일부터 2005/05/30일 사이에 고용된 사원들의 이름, 사번, 고용일자 출력하시오. (고용일자는 역순으로 정렬)
select last_name , employee_id , hire_date from employees where hire_date between '03/01/01' and '05/05/30' |

Q5. 20번 및 50번 부서에서 근무하는 모든 사원들의 이름 및 부서번호를 알파벳 순으로 출력하시오.
select last_name , department_id from employees where department_id IN ( 20 , 50 ) order by last_name |

Q6. 20번 및 50번 부서에 근무하며, 연봉이 200,000~250,000 사이인 사원들의 이름 및 연봉을 출력하시오.
select last_name, salary*12 from employees where department_id IN ( 20 , 50 ) and salary*12 between 200000 and 250000 |
=> 실제로 없나 확인 => 부서번호가 20,50인 사원은 존재하지않은 걸 확인할 수 있음 |

=> 실제로 없나 확인

Q7. 매니저가 없는 사람들의 이름 및 업무를 출력하시오.
select last_name, job_id from employees where manager_id is NULL |

Q8. 매니저가 있는 사람들의 이름 및 업무 , 매니저 번호를 조회하시오.
select last_name, job_id , manager_id from employees where manager_id is NOT NULL |

Q9. 커미션을 받는 모든 사원들의 이름 , 연봉 및 커미션을 출력하시오.
( 연봉을 역순으로(내림차순)으로 정렬 , 연봉은 ANNSAL로 출력 )
select last_name, salary*12 as annsal , commission_pct from employees where commission_pct is NOT NULL order by salary*12 DESC |

Q10. 이름의 네 번째 글자가 a인 사원의 이름을 조회하시오.
select last_name from employees where last_name like '___a%' |

Q11. 이름에 a 및 e 글자가 있는 사원의 이름을 조회하시오. (a와 e 모두 포함하는 이름을 찾기)
select last_name from employees where last_name like '%a%' and last_name like '%e%' |

Q12. 급여가 2500, 3500, 7000이 아니며 직업이 SA_REP나 ST_CLERK인 사원의 이름과 급여, 직업을 출력하시오.
select last_name , salary , job_id from employees where job_id = 'ST_CLERK' or job_id = 'SA_REP' and salary NOT IN(2500,3500,7000) |

Q13. 30번 부서 내의 모든 직업들을 유일한 값으로 출력하시오. ( 90번 부서 또한 포함하고, 직업을 오름차순으로 출력)
select DISTINCT job_id , department_id from employees where department_id IN (30,90) order by job_id |
