본문 바로가기
국비 학원 가서 개발새발

국비학원 15일차) ORACLE 문제들

by 휴일이 2022. 10. 20.
SELECT LAST_NAME
FROM EMPLOYEES
WHERE 
DEPARTMENT_ID=50
AND
LAST_NAME LIKE '_a%';

(LIKE 사용)

DEPARTMENT_ID가 50인 사람 중에서

LAST_NAME의 두번째 글자가 'a'인 사람만 출력해줘



SELECT LAST_NAME
FROM EMPLOYEES
WHERE 
DEPARTMENT_ID=50
AND
SUBSTR(LAST_NAME,2,1) LIKE 'a';

(SUBSTR 사용)

DEPARTMENT_ID가 50인 사람 중에서

LAST_NAME의 두번째 글자가 'a'인 사람만 출력해줘



SELECT LAST_NAME
FROM EMPLOYEES
WHERE 
DEPARTMENT_ID=50
AND
INSTR(LAST_NAME,'a',2,1)
;

(INSTR 사용)

DEPARTMENT_ID가 50인 사람 중에서

LAST_NAME의 두번째 글자가 'a'인 사람만 출력해줘



SELECT EMPLOYEE_ID, LAST_NAME, ROUND(SALARY*1.1) "NEW SALARY"
FROM EMPLOYEES
;

SALARY의 10퍼센트 인상 값은? 소수점은 버려줘

 

 

SELECT *
FROM EMPLOYEES
WHERE MOD(TO_NUMBER(TO_CHAR(HIRE_DATE,'MM')),2)=0
;

HIRE_DATE가 짝수 달인 사람만 출력해줘

 

 

 

 

SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOYEES
WHERE HIRE_DATE>= TO_DATE('2006/01/01','YYYY/MM/DD') AND
HIRE_DATE < TO_DATE('2007/01/01','YYYY/MM/DD')
AND MOD(TO_NUMBER(TO_CHAR(HIRE_DATE,'MM')),2)!=0
;

HIRE_DATE가 2006년인 사람 중에, 홀수 달에 입사한 사람의 정보만 보여줘

 

 

 

SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE,TO_DATE('2007/01/01','YYYY/MM/DD')))
FROM DUAL
;

오늘과 2007년 1월 1일 간의 개월 수는?

 

 

 

 

SELECT DEPARTMENT_ID, HIRE_DATE,
MONTHS_BETWEEN(SYSDATE, HIRE_DATE) "MONTHS"
FROM EMPLOYEES
WHERE MONTHS_BETWEEN(SYSDATE, HIRE_DATE)>=(15*12)
;

 

15년 이상 근무한 사원들의 DEPARTMENT_ID, HIRE_DATE, 근무 개월 수 출력해

근무개월 수 별명은 MONTHS로 해줘

 

 

 

SELECT JOB_ID,
DECODE (JOB_ID
,'AD_PRES', 'A'
,'ST_MAN' ,'B'
,'IT_PROG' ,'C'
,'SA_REP' ,'D'
,'ST_CLERK' ,'E',
'F')"GRADE"
FROM EMPLOYEES
ORDER BY GRADE
;

 

JOB_ID 에 따라 각각 등급을 매길 거야,

전부 해당 안 되면 'F'라고 출력해주고 그 칼럼 이름은 GRADE야

 

 

 

 

 

SELECT LAST_NAME,SALARY, COMMISSION_PCT,
CASE 
WHEN COMMISSION_PCT IS NULL THEN SALARY*12
ELSE (SALARY*12)+(SALARY*12*COMMISSION_PCT)
END AS "ANN_SAL"
FROM EMPLOYEES
;

CASE문으로 구현해

COMMISION_PCT가 NULL이면 SALARY*12 해줘

아니라면 (SALARY*12)+(SALARY*12*COMMISSION_PCT) 값 줘

이 칼럼 이름은 ANN_SAL  이야

 

 

SELECT LAST_NAME,SALARY, COMMISSION_PCT,
DECODE(COMMISSION_PCT,
NULL,SALARY*12,
(SALARY*12)+(SALARY*12*COMMISSION_PCT))
AS "ANN_SAL"
FROM EMPLOYEES
;

 

위와 내용 같음,  DECODE로 구현

 

 

 

728x90