고마구의 개발 블로그
240528 6주차 화요일 - DB 03 본문
-부하직원이 없는 사원 정보를 출력하시오.
select * from emp where empno not in (select mgr from emp where mgr is not null);
select * from emp where empno !=all (select mgr from emp where mgr is not null);
All, NOT IN을 쓸 때, 서브 쿼리 반환 결과 집합에 NULL이 있으면 일치여부를 알 수 없다(공집합 반환);
4. 메일주소에 밑줄표시가 있는 사원을 출력하시오
select * from employees where email like '%\_%' ESCAPE '\'
8. 업무별 최저임금과 최고임금 사이의 봉급을 가지는 사원의 이름과 업무명을 출력하시오.
select e.first_name, j.job_title from employees e,jobs j where e.job_id=j.job_id and salary between min_salary and max_salary;
10. 2월 28일에 입사한 사원의 이름, 업무명, 부서명을 출력하시오.
select first_name,job_title,department_name from employees e,departments d,jobs j where e.job_id=j.job_id and
e.department_id=d.department_id and to_char(hire_date,'MMDD')=0228;
14. 2008년 1월 1일 이후에 입사한 사원을 출력하시오.
SELECT * FROM EMPLOYEES where hire_date > '2008:01:01';
SELECT * FROM EMPLOYEES where hire_date > '2008-01-01';
18. 사원 이름과 임금을 출력하되 임금을 1000단위로 출력하시오.
SELECT FIRST_NAME, SALARY, ROUND(SALARY, -3) FROM EMPLOYEES;
21. 5월에 입사한 사원을 출력하시오.
SELECT * FROM EMPLOYEES WHERE TO_CHAR(HIRE_DATE, 'MM')= 05;
SELECT * FROM EMPLOYEES WHERE EXTRACT(MONTH FROM CAST(hire_date AS TIMESTAMP))= 05;
23. 사원들의 이름과 첫 월급날을 출력하시오. 매월 1일이 월급 날이다.
SELECT FIRST_NAME, HIRE_DATE, LAST_DAY(HIRE_DATE)+1 FROM EMPLOYEES;
26. 첫 글자는 대문자로, 나머지 글자는 소문자로 변환하여 성과 이름을 출력하시오.
SELECT INITCAP(FIRST_NAME), INITCAP(LAST_NAME) FROM EMPLOYEES;
27.업무명의 첫 단어를 출력하시오.
SELECT JOB_TITLE, SUBSTR( JOB_TITLE, 1, INSTR(JOB_TITLE || ' ', ' ')-1 ) FROM JOBS;
INSTR(JOB_TITLE || ' ', ' ')-1 ,공백을 찾은 인덱스에 -1을 한다
28. 성의 3번째 문자 이후에 'b'가 포함된 사원의 이름의 길이를 출력하시오.
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE INSTR(LAST_NAME,'B') > 3
31. 현재 날짜와 2011년 1월 1일이 며칠 차이인지 출력하시오.
SELECT sysdate-to_DATE('2011-01-01') FROM dual;
32. 2002년 각 달마다 몇 명의 사원이 입사하였는지 출력하시오.
select to_char(hire_date,'MM'),count(*) from employees where to_char(hire_date,'YYYY')=2002 group by to_char(hire_date,'MM');
40. 10명이 넘는 사원이 입사한 연도를 출력하시오.
select to_char(hire_date,'YYYY') from employees group by to_char(hire_date,'YYYY') having count(to_char(hire_date,'YYYY'))>10;
select count(to_char(hire_date,'YYYY')) from employees group by to_char(hire_date,'YYYY');
46.사번 115번 사원의 현재 임금이 6000미만일 경우 8000으로 변경하시오.
update employees set salary=8000 where employee_id=115 and salary<6000;
50번부터
'KDT풀스택과정 공부' 카테고리의 다른 글
240530 6주차 목요일 - DB 05 (0) | 2024.05.30 |
---|---|
240529 6주차 수요일 - DB 04 (0) | 2024.05.29 |
240524 5주차 금요일 - DB 02 (0) | 2024.05.24 |
240523 5주차 목요일 - DB 01 (0) | 2024.05.23 |
240521 5주차 화요일- JAVA 18 (0) | 2024.05.21 |