상세 컨텐츠

본문 제목

[오라클]4월 13일 문제와 문제풀이

데이터베이스

by esoesmio 2023. 4. 13. 19:44

본문

 

 

 

 

--1) 이름이 두 글자(공백포함 3)인 학생의 이름을 검색하세요

 

--2) '공'씨 성을 가진 학생의 이름을 검색하세요

 

--3) 교수의 지위를 한글자로 검색하세요(ex. 조교수 -> 조)

 

--4) 일반 과목을 기초 과목으로 변경해서 모든 과목을 검색하세요

 

--5) 만일 입력 실수로 student테이블의 sname컬럼에 데이터가 입력될 때


--   문자열 마지막에 공백이 추가되었다면 검색할 때 이를 제외하고


--   검색하는 SELECT 문을 작성하세요

 

--1) 교수들이 부임한 달에 근무한 일수는 몇 일인지 검색하세요

 

--2) 교수들의 오늘까지 근무한 주가 몇 주인지 검색하세요

 

--3) 1991년에서 1995년 사이에 부임한 교수를 검색하세요

 

--4) 학생들의 4.5 환산 평점을 검색하세요(단 소수 이하 둘째자리까지)

 

--5) 사원들의 오늘까지 근무 기간이 몇 년 몇 개월 며칠인지 검색하세요

 

--1) 학생의 평균 평점을 다음 형식에 따라 소수점 이하 2자리까지 검색하세요

 

--'OOO 학생의 평균 평점은 O.OO입니다.'

 

--2) 교수의 부임일을 다음 형식으로 표현하세요


--'OOO 교수의 부임일은 YYYY년 MM월 DD일입니다.'

 

--3) 교수중에 3월에 부임한 교수의 명단을 검색하세요

 

 

 

--<단일 행 함수를 사용하세요>
--1) 이름이 두 글자(공백포함 3)인 학생의 이름을 검색하세요
SELECT SNAME
    FROM STUDENT
    WHERE LENGTH(SNAME) = 3;

--2) '공'씨 성을 가진 학생의 이름을 검색하세요
SELECT SNAME
    FROM STUDENT
    WHERE INSTR(SNAME, '공') = 1;

--3) 교수의 지위를 한글자로 검색하세요(ex. 조교수 -> 조)
SELECT SUBSTR(ORDERS, 1, 1)
    FROM PROFESSOR;

--4) 일반 과목을 기초 과목으로 변경해서 모든 과목을 검색하세요
--  (ex. 일반화학 -> 기초화학)
SELECT REPLACE(CNAME, '일반', '기초')
    FROM COURSE
    WHERE CNAME LIKE '%일반%';
   
--5) 만일 입력 실수로 student테이블의 sname컬럼에 데이터가 입력될 때
--   문자열 마지막에 공백이 추가되었다면 검색할 때 이를 제외하고
--   검색하는 SELECT 문을 작성하세요
SELECT SUBSTR(SNAME, 1, LENGTH(SNAME) - 1)
    FROM STUDENT;
    
SELECT TRIM(SNAME)
    FROM STUDENT;

--<단일 행 함수를 이용하세요>
--1) 교수들이 부임한 달에 근무한 일수는 몇 일인지 검색하세요
SELECT PNO
     , PNAME
     , TRUNC(LAST_DAY(HIREDATE)) - TRUNC(HIREDATE)
     FROM PROFESSOR;

--2) 교수들의 오늘까지 근무한 주가 몇 주인지 검색하세요
SELECT PNO 
     , PNAME
     , TRUNC((SYSDATE - HIREDATE) / 7)
    FROM PROFESSOR;

--3) 1991년에서 1995년 사이에 부임한 교수를 검색하세요
SELECT PNO
     , PNAME
     , HIREDATE
    FROM PROFESSOR
    WHERE TRUNC(HIREDATE, 'YYYY') BETWEEN TO_DATE('1991', 'YYYY') AND TO_DATE('1995', 'YYYY');

--4) 학생들의 4.5 환산 평점을 검색하세요(단 소수 이하 둘째자리까지)
SELECT SNO
     , SNAME
     , ROUND(AVR * 4.5 / 4.0, 2)
    FROM STUDENT;

--5) 사원들의 오늘까지 근무 기간이 몇 년 몇 개월 며칠인지 검색하세요
SELECT ENO
     , ENAME
     , TRUNC(MONTHS_BETWEEN(SYSDATE, HDATE) / 12) || '년'
       || MOD(TRUNC(MONTHS_BETWEEN(SYSDATE, HDATE)), 12) || '개월'
       || TRUNC(SYSDATE - ADD_MONTHS(HDATE, MONTHS_BETWEEN(SYSDATE, HDATE))) || '일'
    FROM EMP;

--1) 학생의 평균 평점을 다음 형식에 따라 소수점 이하 2자리까지 검색하세요
--'OOO 학생의 평균 평점은 O.OO입니다.'
SELECT SNAME || '학생의 평균 평점은 ' || ROUND(AVR, 2) || '입니다.'
    FROM STUDENT;

--2) 교수의 부임일을 다음 형식으로 표현하세요
--'OOO 교수의 부임일은 YYYY년 MM월 DD일입니다.'
SELECT PNAME || '교수의 부임일은 ' || TO_CHAR(HIREDATE, 'YYYY') || '년 ' || TO_CHAR(HIREDATE, 'MM') ||
        '월 ' || TO_CHAR(HIREDATE, 'DD') || '일입니다.'
    FROM PROFESSOR;
    
SELECT PNAME || TO_CHAR(HIREDATE, '"교수의 부임일은 "YYYY"년 "MM"월 "DD"일입니다."')
    FROM PROFESSOR;

--3) 교수중에 3월에 부임한 교수의 명단을 검색하세요
SELECT PNO
     , PNAME
     , HIREDATE
    FROM PROFESSOR
    WHERE TO_CHAR(HIREDATE, 'MM') = '03';\

 

 

select dno,DNAME
from DEPT
where lower(dname) = 'erp';




update STUDENT
set sname = sname||' ';

commit;



select sname from STUDENT
where length(SNAME) = 3;


select length('김은석')
from dual;

select sname from student
where substr(sname,1,1)='공';
---문자열 순서를 리턴

select pname, ORDERS
from PROFESSOR
where substr(ORDERS,1,1) = '조';


select replace(CNAME,'일반','바보 ㅋㅋ') ,CNO
from course;


select substr(SNAME,1,length(sname)-1) from student;

select sname from student;




--2.1

select pname,last_day(HIREDATE),HIREDATE,trunc(last_day(HIREDATE))- trunc(HIREDATE)
from PROFESSOR;

select pname, HIREDATE from PROFESSOR;

select pname, round((trunc(sysdate)- trunc(HIREDATE))/7)
from professor;

select pname, HIREDATE from PROFESSOR
where HIREDATE between to_date('1994','yyyy') and to_date('1995','yyyy');

select sname, round(avr*(9/8),2), avr
from student;

select pname, HIREDATE, trunc((sysdate - HIREDATE)/365,0)||'년'
from PROFESSOR;

SELECT
HIREDATE,
TRUNC(MONTHS_BETWEEN(SYSDATE, HIREDATE) / 12) || '년 ' ||
TRUNC(MOD(MONTHS_BETWEEN(SYSDATE, HIREDATE), 12)) || '개월 ' ||
TRUNC(MOD(TRUNC(SYSDATE) - TRUNC(HIREDATE), 30.5)) || '일'
AS "근무 기간"
FROM PROFESSOR;

select pname, trunc(months_between(trunc(sysdate), trunc(HIREDATE))/12)||'년'||trunc(mod(months_between(trunc(sysdate), trunc(HIREDATE)),12)) ||'개월'
||mod( (trunc(sysdate)-trunc(HIREDATE)),30.5 )
from PROFESSOR


;

select to_char(HIREDATE, 'yyyy') || '년'||to_char(HIREDATE, 'MM')||'월'||to_char(HIREDATE, 'dd')||'일'
from PROFESSOR;

select pname,HIREDATE from PROFESSOR
where to_char(HIREDATE,'MM')=3;

select SNAME, AVR
from STUDENT;
 

 

select * from student;

select HIREDATE from PROFESSOR;

select trunc(HIREDATE) from PROFESSOR;


select trunc(LAST_DAY(HIREDATE))-trunc(HIREDATE) from PROFESSOR;



select pno, pname,   trunc ( (trunc(sysdate) - trunc(HIREDATE))/7) from PROFESSOR;

SELECT PNO
     , PNAME
     , TRUNC((SYSDATE - HIREDATE) / 7)
FROM PROFESSOR;



select pname, trunc(  ( trunc(sysdate) - trunc(HIREDATE))/7             ) from PROFESSOR;


select pno, pname, hiredate from PROFESSOR where trunc(HIREDATE , 'YYYY') between to_date('1991','YYYY') and to_date('1995','YYYY');

select * from PROFESSOR where trunc(HIREDATE,'YYYY') between to_date('1994','YYYY') and to_date('1995','YYYY');

select * from PROFESSOR where trunc(HIREDATE) between to_date('1994','YYYY') and to_date('1995','YYYY');

select * from student;

select  round( avr * (4.5/4),2) from student;

select trunc(months_between(sysdate,HDATE)/12),  mod( trunc(months_between(trunc(sysdate),trunc(HDATE))) ,12), trunc(  sysdate - add_months(Hdate, months_between(sysdate, HDATE)) ) from emp;

select  trunc(months_between(sysdate,HDATE)/12), mod(trunc(months_between(sysdate,HDATE)),12 ),       trunc(   sysdate - add_months(HDATE, months_between(sysdate,HDATE)    )  ) from EMP;

select trunc(months_between(sysdate,HDATE)/12),  mod (trunc(months_between(sysdate, HDATE)
    ) ,12),  trunc(sysdate - add_months(HDATE, months_between(sysdate, HDATE)))  from EMP;

select trunc(months_between(sysdate,HDATE)/12) ,   mod( trunc(months_between(sysdate, HDATE)   ) ,12)  , trunc(sysdate - add_months(HDATE, months_between(sysdate,HDATE))) from EMP;

select * from student;
select sname || '학생의 평균 평점은' ||round(avr,2) || '입니다' from STUDENT;
SELECT SNAME || '학생의 평균 평점은 ' || to_char( ROUND(AVR, 2),'0.99'  )  || '입니다.'
FROM STUDENT;


select HIREDATE from PROFESSOR;

select to_char(HIREDATE,'YYYY') || to_char(HIREDATE,'MM') from PROFESSOR;

SELECT PNAME || TO_CHAR(HIREDATE, '"교수의 부임일은 "YYYY"년 "MM"월 "DD"일입니다."')
FROM PROFESSOR;


select pname || to_char(HIREDATE, '  "교수의 부임일은 "YYYY"년 "MM"월 "DD" 일입니다."  ') from PROFESSOR;

select * from PROFESSOR where to_char(HIREDATE,'MM') = '03';

select to_char(HIREDATE,'MM') from PROFESSOR;

 




관련글 더보기

댓글 영역