< SQL 단일행함수 실습문제 >
이름 :조은수
EX1. 현재 날짜를 표시하는 질의를 작성하고 열 레이블을 Date로 지정한다.
SELECT SYSDATE AS "Date" FROM DUAL;
EX2. 사원 번호, 이름, 급여 및 15% 인상된 급여를 정수로 표시하고 열 레이블을 New salary 로 한다.
SELECT EMPLOYEE_ID, LAST_NAME,SALARY,TRUNC( (SALARY*1.15),0) AS "New salary"
from emp;
EX3. 급여 인상분(새 급여에서 이전 급여를 뺀 값)을 추가하도록 수정하고 열 레이블을 Increase로 지정한다.
SELECT TRUNC((SALARY*1.15),0)-SALARY AS "INCREASE"
FROM EMP;
EX4. 사원 이름, 입사일 및 급여 검토일을 표시한다.
급여 검토일은 여섯 달 근무 후 해당하는 첫 번째 월요일입니다.
열 레이블은 REVIEW로 지정하고 날짜는 "yyyy-mm-dd"과 같은 형식으로 표시되도록 지정합니다.
SELECT LAST_NAME, HIRE_DATE,
TO_DATE(NEXT_DAY(HIRE_DATE,'월요일'),'YYYY-MM-DD') AS "REVIEW"
FROM EMP;
==========
ADDMONTH
==========
SELECT LAST_NAME,HIRE_DATE,
TO_CHAR(NEXT_DAY(ADD_MONTHS(HIRE_DATE,6),2),'YYYY-MM-dd')
FROM EMP;
EX5. 사원의 이름, 근무월수(입사일로부터 현재까지 월수)를 계산하며 열레이블을 MONTHS_WORKED로 지정합니다.
결과는 정수로 반올림하여 표시하고 오래 근무한 사원부터 출력하시오.
SELECT LAST_NAME,
ROUND (MONTHS_BETWEEN (SYSDATE, HIRE_DATE),0) AS "MONTHS_WORKED"
FROM EMP
ORDER BY MONTHS_WORKED DESC;
EX6. 각 사원에 대해 다음 항목을 생성하는 질의를 작성합니다.
<employee name> earns <salary> monthly but wants <3 times salary>.
열 레이블을 “Wanted wage“로 지정합니다.
출력예 : King earns 24000 monthly but wants 72000
SELECT LAST_NAME ||' earns '|| SALARY ||' monthly but want '||(SALARY*3) AS "Wanted wage"
FROM EMP;
EX7. 모든 사원의 이름 및 급여를 표시하는 질의를 작성합니다,
급여는 15자 길이로 왼쪽에 $ 기호가 붙는 형식으로 표기하고 열 레이블은 salary 로 지정합니다.
SELECT LAST_NAME, LPAD(SALARY,15,'$') AS "salary"
FROM EMP;
==============
TO_CHAR
==============
SELECT LAST_NAME,LPAD(TO_CHAR(SALARY,'$99,999'),15,'') AS "SALARY"
FROM EMP;
EX8. 이름이 J, A 또는 M으로 시작하는 모든 사원의 이름(첫 글만 대문자로) 및 이름 길이를 표시하시오.
SELECT LAST_NAME,LENGTH(LAST_NAME)
FROM EMP
WHERE LAST_NAME LIKE ('J%') OR LAST_NAME LIKE ('A%') OR LAST_NAME LIKE ('M%');
---------
(2)
SELECT LAST_NAME,LENGTH(LAST_NAME)
FROM EMP
WHERE SUBSTR(LAST_NAME,1,1) in ('J','M','A');
EX9. 이름, 입사일 및 업무 시작 요일을 표시하고 열 레이블을 DAY로 지정합니다. //정렬?!ㄱㄴㄷ순으로되네;;;;
일요일 ~ 토요일 순으로 정렬
SELECT NAME,HIRE_DATE,
HIRE_DATE,
TO_CHAR(TO_DATE(HIRE_DATE,'DAY')) AS "DAY"
FROM EMP
ORDER BY DAY ASC;///ERROR : HOW TO SHOW FROM SUN~SAT
===============
ORDER BY TO_CHAR(HIRE_DATE,'d');
EX10. 사원 이름 및 급여와 커미션합계를 표시하는 질의를 작성합니다. 열이름은 TOTAL 로 지정한다.
커미션을 받으면 사원은 'Yes'으로 표시하고, 아니면 'No'로 표시하고
열 레이블은 COMMISSION으로 지정합니다.
SELECT LAST_NAME,SALARY
,SALARY+(SALARY*NVL(COMMISSION_PCT,0)) AS "TOTAL",
NVL2(COMMISSION_PCT,'Yes','No') AS "COMMISSION"
FROM EMP;
EX11. 사원의 이름을 표시하고 급여 총액을 별표(*)로 나타내는 질의를 작성합니다.
각 별표는 1000달러를 나타냅니다.
급여 기준으로 데이터를 내림차순으로 정렬하고 열 레이블을 EMPLOYEE_GREAD 로 지정합니다.
출력 예 :
Hunold 9000 *********
Ernst 6000 ******
Austin 4800 ****
=================
SELECT LAST_NAME, SALARY, RPAD('',TRUNC(SALARY/1000)+1,'*') AS EMPLOYEE_GREAD
FROM EMP
ORDER BY SALARY DESC;
-----------------------------
SELECT LAST_NAME,SALARY,LPAD(' ',TRUNC(SALARY/1000)+1,'*') AS EMPLOYEE_GREAD
FROM EMP
ORDER BY SALARY DESC;
EX12. 사원의 이름, 직무, 직무 열의 값을 기준으로 모든 사원의 등급을 표시하는 질의를 작성합니다.
job_id 가 'CLERK'로 끝나면 => '☆'
'REP'로 끝나면 => '☆☆'
'MAN'로 끝나면 => '☆☆☆'
그 밖은 공백으로 표시하시오. 열 레이블은 "GRADE"로 지정합니다.
출력 예 :
Johnson SA_REP ☆☆
Taylor SH_CLERK ☆
SELECT LAST_NAME, JOB_ID,
CASE
WHEN JOB_ID LIKE ('%CLERK') THEN '☆'
WHEN JOB_ID LIKE ('%REP') THEN '☆☆'
WHEN JOB_ID LIKE ('%MAN') THEN '☆☆☆'
ELSE ' '
END AS "GRADE"
FROM EMP
ORDER BY "GRADE" DESC;
'Lobo's study room > 오라클DB' 카테고리의 다른 글
[3일차 과제]급여 최고액, 최저액, 총액, 평균 구하기 (0) | 2022.02.10 |
---|---|
[3일차]JOIN 함수 (0) | 2022.02.10 |
[2일차]함수 (0) | 2022.02.10 |
[1일차 과제]select절과 쿼리 실행 순서 (0) | 2022.02.10 |
[1일차]select함수 (0) | 2022.02.10 |