교수테이블에서 이름, 아이디, 이메일 출력
select NAME, ID, EMAIL from professor;
교수 테이블에서 PROFNO,NAME,POSITION,HPAGE 칼럼을 출력
(단,"교수번호","위치","홈페이지" 칼럼 별명 부여)
, name"교수명"
, position"위치"
, hpage"홈페이지" from professor;
교수 테이블에서 합성 연산자 사용하여 다음과 같이 출력
SELECT name||'교수의 이메일은 '||email||'이고, 홈페이지는 '||hpage||'이다.' from professor;
교수 테이블에서 교수이름, 월급, 연봉 출력
(연봉 : 월급*12)
, pay
,pay*12 "Y_PAY"
FROM professor;
월급이 2000보다 큰 사원의 이름, 직업, 월급 출력하되 월급이 큰 순으로 출력
SELECT ENMAE
, JOB
, SAL FROM EMP
WHERE SAL > 2000
ORDER BY SAL DESC;
20번 부서 사원 중에서 월급이 1000이상인 사원의 이름, 부서번호, 월급 출력
SELECT ENMAE
, DEPTNO
, SAL FROM EMP
WHERE DEPTNO = 20 AND SAL >= 1000;
사원 중 이름이 ja로 시작되는 사원이름, 직업, 부서번호 출력
select ename
, job
,deptno from emp
where ename like 'JA%';
여기서 이름은 데이터 값 그대로 작성해야함(대문자 소문자 구별!)
커미션을 받지 않는 사원의 이름, 직업, 부서번호 출력
SELECT ENAME
, JOB
, DEPTNO FROM EMP
WHERE COMM IS NULL;
EMP 테이블에서 이름, 부서번호, 금여, 연봉 출력하되 부서번호와 연봉으로 정렬
(부서번호는 내림차순으로 연봉은 오름차순)
SELECT ENAME
, DEPTNO
, SAL
, SAL*12 FROM EMP
ORDER BY DEPTNO DESC,SAL*12;
급여가 1000이상이면서 커미션을 받거나 급여가 3000이상인 사원 이름, 급여, 커미션 출력
SELECT ENAME
, SAL
,COMM FROM EMP
WHERE (SAL>=1000 AND COMM >0)
OR SAL>=3000;
교수 테이블에서 홈페이지가 있는 교수 중 교수번호, 교수명, 홈페이지 주소, 홈페이지에서 .이 두번째로 오는 위치 출력하시오
SELECT PROFNO
, NAME
, HPAGE
, INSTR(HPAGE,'.',1,2)"HTTP"
FROM professor
WHERE HPAGE IS NOT NULL;
교수 테이블에서 이메일이 있는 교수 중에서 교수번호, 교수명, 이메일 아이디 출력하시오.(이메일 아이디는 이메일 이용해서 구하기)
SELECT PROFNO
,NAME
,SUBSTR(EMAIL,1,INSTR(EMAIL,'@')-1) "EMAIL_ID"
FROM PROFESSOR
WHERE EMAIL IS NOT NULL;
교수 테이블에서 이메일이 있는 교수들의 이름과 ID, POSITION, EMAIL 길이를 출력하시오
(이름은 대문자, ID는 소문자, POSITION은 첫글자만 대문자로 출력)
SELECT UPPER(NAME)"NAME"
, LOWER(ID)"ID"
, INITCAP(POSITION)"POSITION"
,LENGTH(EMAIL)"EMAIL_SIZE"
FROM PROFESSOR;
고객 테이블에서 JUMIN 컬럼을 사용해서 포인트가 10만 이상인 고객의 이름, 태어난 년도, 포인트 출력(포인트는 큰 순서대로 정렬)
SELECT GNAME
, SUBSTR(JUMIN,1,2)"YEAR"
,POINT
FROM CUSTOMER
WHERE POINT >=100000
ORDER BY POINT DESC;
교수 테이블에서 EMAIL 컬럼 사용해서 이메일이 있는 교수의 이름과 이메일,’@’가 나오는위치 출력
SELECT NAME,
EMAIL,
INSTR(EMAIL,'@')"@"
FROM PROFESSOR
WHERE EMAIL IS NOT NULL;
SUBSRT, INSTR 문제
교수테이블 참고하여 이메일이 있는 교수의 이름과 이메일과 이메일에 있는 도메인의 회사 이름 출력
SELECT NAME
, EMAIL
,SUBSTR(EMAIL, INSTR(EMAIL,'@')+1, INSTR(EMAIL,'.')-INSTR(EMAIL,'@')-1)
"DOMAIN"
FROM PROFESSOR
WHERE EMAIL IS NOT NULL;
SELECT NAME, EMAIL,
SUBSTR(EMAIL, INSTR(EMAIL,'@'), INSTR(EMAIL,'.')-INSTR(EMAIL,'@'))
"DOMAIN"
FROM PROFESSOR;
인 경우
SUBSTR(EMAIL, INSTR(EMAIL,'@')+1, INSTR(EMAIL,'.')-INSTR(EMAIL,'@'))
"DOMAIN"
FROM PROFESSOR;
SELECT NAME, EMAIL,
SUBSTR(EMAIL, INSTR(EMAIL,'@'), INSTR(EMAIL,'.')-INSTR(EMAIL,'@')-1)
"DOMAIN"
FROM PROFESSOR;
이케 나옴
DEPT 테이블에서 부서들의 이름은 총 9자리로 출력하되 왼쪽 빈자리에는 해당 자리수에 해당되는 숫자가 출력되고 , 위치명들의 오른쪽 빈자리에는 해당자리수의 숫자가 출력되도록 하기
SELECT DNAME
, LPAD(DNAME,9,'123456789')"LPAD"
, LOC
, RPAD(LOC,9,SUBSTR('123456789',LENGTH(LOC)+1))
"RPAD"
FROM DEPT;
고객 테이블에서 아래와 같이 주민등록번호가 77년생보다 나이가 많은 고객들의 이름과 주민번호와 4-6번째 글자만 '337'로 변경하여 출력하시오
SELECT GNAME
, JUMIN
, REPLACE(GNAME,SUBSTR(GNAME,4,3),'337')"337"
FROM CUSTOMER
WHERE SUBSTR(JUMIN,1,2) < '77';
교수 테이블에서 홈페이지가 있는 교수들의 이름과 홈페이지와 '.'이 2번째 오는 곳 뒤부터 2글자를 'OK'로 변경해서 출력
SELECT NAME
, HPAGE
, REPLACE(HPAGE
,SUBSTR(HPAGE,INSTR(HPAGE,'.',1,2)+1,2),'OK') "OK"
FROM PROFESSOR
WHERE HPAGE IS NOT NULL;
교수 테이블의 HIREDATE 컬럼을 사용하여 입사 일자가 3,8,10월인 교수의 이름과 HIREDATE를 아래 화면과 같이 출력하세요
SELECT NAME
, HIREDATE
FROM PROFESSOR
WHERE TO_CHAR(HIREDATE,'MM')
IN ('03','08','10');
SELECT NAME
, TO_CHAR(HIREDATE,'YYYY-MM-DD')"HIREDATE"
, PAY
, BONUS
, TO_CHAR((PAY12)+BONUS,'$999,999') "TOTAL"
, TO_CHAR(((PAY12)+BONUS)0.9,'$999,999') "10%DOWN"
, TO_CHAR(((PAY12)+BONUS)0.91200,'999,999,999') "WON"
FROM PROFESSOR
WHERE BONUS IS NOT NULL;
SELECT ENAME
, SAL
,NVL(COMM,0)"COMM"
,TO_CHAR(SAL*12+NVL(COMM,0),'999,999')"TOTAL"
FROM EMP
WHERE DEPTNO =30;
SELECT DECODE('A','B',DECODE('A','B','1',NULL)) FROM DUAL;
-- 출력 : NULL
SELECT DECODE('A','A',DECODE('A','B','1',NULL)) FROM DUAL;
-- 출력 : NULL
SELECT DECODE('A','A',DECODE('A','A','1',NULL)) FROM DUAL;
-- 출력 : 1
SELECT DEPTNO
, NAME
, DECODE(DEPTNO,'101',DECODE(NAME,'Audie Murphy','BEST!')) "ETC"
FROM PROFESSOR;
SELECT DECODE('A','B',DECODE('C','D','1','2')) FROM DUAL;
-- 출력 NULL
SELECT DECODE('A','A',DECODE('C','D','1','2')) FROM DUAL;
-- 출력 2
SELECT DECODE('A','A',DECODE('C','C','1','2')) FROM DUAL;
-- 출력 1
SELECT DEPTNO
, NAME
, DECODE(DEPTNO,'101',DECODE(NAME,'Audie Murphy','BEST!','GOOD!')) "ETC"
FROM PROFESSOR;
SELECT DECODE('A','B',DECODE('C','D','1','2'),'3') FROM DUAL;
-- 출력 3
SELECT DECODE('A','A',DECODE('C','D','1','2'),'3') FROM DUAL;
-- 출력 2
SELECT DECODE('A','A',DECODE('C','C','1','2'),'3') FROM DUAL;
-- 출력 1
SELECT DEPTNO
, NAME
, DECODE(DEPTNO,'101',DECODE(NAME,'Audie Murphy','BEST!','GOOD!'),'N/A') "ETC"
FROM PROFESSOR;
SELECT NAME, JUMIN, DECODE(SUBSTR(JUMIN,7,1),1,'MAN','2','WOMAN') "Gender"
FROM STUDENT
WHERE DEPTNO1 =101;
SELECT NAME
,TEL
,DECODE(SUBSTR(TEL,1,INSTR(TEL,')',1,1)-1),'02','SEOUL'
,'031','GTEONGGI'
,'051','BUSAN'
,'052','ULSAN'
,'055','GYEONGNAM') "LOC"
FROM STUDENT
WHERE DEPTNO1 = 101;
동일한 방법
SELECT CASE '01' WHEN '01' THEN 'A'
WHEN '02' THEN 'B'
WHEN '03' THEN 'C'
ELSE 'ETC'
END"TEST"
FROM DUAL;
-- A
SELECT CASE '01' WHEN '02' THEN 'A'
WHEN '01' THEN 'B'
WHEN '03' THEN 'C'
ELSE 'ETC'
END"TEST"
FROM DUAL;
--B
SELECT CASE '01' WHEN '03' THEN 'A'
WHEN '02' THEN 'B'
WHEN '01' THEN 'C'
ELSE 'ETC'
END"TEST"
FROM DUAL;
--C
SELECT CASE '11' WHEN '03' THEN 'A'
WHEN '02' THEN 'B'
WHEN '01' THEN 'C'
ELSE 'ETC'
END"TEST"
FROM DUAL;
--ETC