SELECT NAME
, TEL
, POSITION
, TO_CHAR(PAY,'999,999,999') "PAY"
, RANK()OVER(PARTITION BY SUBSTR(TEL,1,INSTR(TEL,')')-1),
POSITION ORDER BY PAY DESC)
FROM EMP2;
SELECT NAME
, BIRTHDAY
, EMP_TYPE
, TO_CHAR(PAY,'999,999,999')"PAY"
, TO_CHAR(SUM(PAY) OVER(PARTITION BY EMP_TYPE),'999,999,999') "TOTAL"
FROM EMP2;
SELECT
GNAME,
JUMIN,
TO_CHAR(POINT, '999,999') "POINT",
TO_CHAR(SUM(POINT)
OVER(PARTITION BY SUBSTR(JUMIN, 1, 2)
ORDER BY POINT DESC),'999,999,999') "TOTAL",
ROUND(POINT / SUM(POINT)
OVER(PARTITION BY SUBSTR(JUMIN, 1, 2)) * 100,2) "RATIO(%)"
FROM customer
GROUP BY GNAME, JUMIN, POINT;
์ ๋ฒ ์๊ฐ์ ๋ง๋
SCORE2, SUBJECT2, STUDENT2 ํ
์ด๋ธ ์์ฑ ๋ฐ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ ํํ
SELECT * FROM STUDENT2; -- A001 AA
SELECT * FROM SUBJECT2; -- 100 A1
SELECT * FROM SCORE2;
INSERT INTO SCORE2 VALUES('A000',111,60,'G'); -- ์คํ ์๋จ Gํ๋ฒ ์์
INSERT INTO SCORE2 VALUES('A000',111,60,'D'); -- ์คํ ์๋จ 111์ด๋ ์์ค ์์ 100์ ์์
INSERT INTO SCORE2 VALUES('A000',100,60,'D'); -- ์คํ์๋จ A000์๋จ A0001๋ก ๋ฐ๊ฟ
INSERT INTO SCORE2 VALUES('A0001',100,60,'D'); -- ์คํ๋จ SCORE2์ ์ปฌ๋ผ์ ๋ํ ๊ฐ๋ค A0001 100 60 D
--๋ฐ์ดํฐ ์ญ์
DELETE FROM student2; -- ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํจ.(SCORE2์ ์กด์ฌํจ)
--๊ทธ๋์ ํ๋ ค๋ฉด SCORE2๋ถํฐ DELETE ํด์ผํจ
DELETE FROM SUBJECT2; -- ์์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํจ.(SCORE2์ ์กด์ฌํจ)
--๊ทธ๋์ ํ๋ ค๋ฉด SCORE2๋ถํฐ DELETE ํด์ผํจ
DELETE FROM SCORE2;
๊ทธ๋ฌ๋
student2์ SUBJECT2๋ ์ญ์ ์๋จ.(์์ ๋ฐ์ดํฐ๊ฐ SCORE2์ ์กด์ฌํ๊ธฐ ๋๋ฌธ)
โ ์ญ์ ํ๋ ค๋ฉด SCORE2๋ฅผ ์ญ์ ํด์ํจ.
์ด๋ฌ๋ ๊ณผ์ ์ด ๋๋ฌด ๊ท์ฐฎ์.
๊ตณ์ด ์์์ ์ง์ฐ๊ณ ๋ถ๋ชจ๋ฅผ ์ง์์ผํ๋๊ฐ? ํ๋ฒ์ ๋ถ๋ชจ, ์์๋ฐ์ดํฐ๋ฅผ ๋ค ์ง์ฐ๋ ๋ฐฉ๋ฒ์ด ํ์
DROP TABLE SCORE2;
์คํํ๊ณ ,SCORE2 ํ
์ด๋ธ ์ฌ์์ฑํ ๋ค์
CREATE TABLE SCORE2(
STU_ID CHAR(5) CONSTRAINT SCORE2_STU_ID_NN NOT NULL,
SUB_ID NUMBER(3) CONSTRAINT SCORE2_SUB_ID_NN NOT NULL,
SCORE NUMBER(3) CONSTRAINT SCORE2_SCORE_NN NOT NULL,
GRADE CHAR(1) CONSTRAINT SCORE2_GRADE_CK CHECK(GRADE IN('A','B','C','D','F')),
CONSTRAINT SCORE2_PK PRIMARY KEY(STU_ID, SUB_ID),
--CONSTRAINT SCORE2_FK1 FOREIGN KEY (STU_ID) REFERENCES STUDENT2(STU_ID),
--CONSTRAINT SCORE2_FK2 FOREIGN KEY (SUB_ID) REFERENCES SUBJECT2(SUB_ID),
CONSTRAINT SCORE2_FK1 FOREIGN KEY (STU_ID) REFERENCES STUDENT2(STU_ID) ON DELETE CASCADE,
CONSTRAINT SCORE2_FK2 FOREIGN KEY (SUB_ID) REFERENCES SUBJECT2(SUB_ID) ON DELETE CASCADE
);
์คํ
ON DELETE CASCADE
์ฌ์ฉ
์ค์ ๋ก DELETE FROM STUDENT2; ์คํํ๋ฉด STUDENT2์ ๋ฐ์ดํฐ์ ์์๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ SCORE2์ ๋ฐ์ดํฐ๋ ๋ชจ๋ ์ฌ๋ผ์ง
ROLLBACK;
ํ DELETE FROM SUBJECT2;
์ค์
๊ทธ๋ฌ๋ฉด SUBJECT2์ SCORE2์ ๊ฐ๋ง ์ฌ๋ผ์ง
(์ฌ๊ธฐ์ ํน์๋ ์ถ์ด์ ์ด์ผ๊ธฐ ํ์ง๋ง ROLLBACK;ํด์ STUDENT2๋ ๋ฐ์ดํฐ๋ ์กด์ฌํจ)
๋ณด๊ธฐ์ Data Modeler โ ๋ธ๋ผ์ฐ์
๋ธ๋ผ์ฐ์ ์์ ์ฐํด๋ฆญ โ ๋ฐ์ดํฐ ์ ์ฅ (D:\model์์ฑํ์ฌ model๋ก ์ ์ฅ)
๊ทธ๋ฌ๋ฉด
๊ด๊ณํ ๋ชจ๋ธ์ Relationa_1์ด ์์ฑ๋จ
! ๋ง์ฝ์ ์ด ๊ณผ์ ์ด ์๋๋ฉด ์ค๋ผํด ํํ์ด์ง์์ SQL Developer Data Modeler ๋ฅผ ๋ค์ด ๋ฐ์์ผํจ !
๊ทธ ํ, Relationa_1์ ์ฐํด๋ฆญ , ํ์ ํด๋ฆญํ๋ฉด ๋ณด์ง ๋ชปํ ๋ฉ๋ด๋ค์ด ๋์ด
์ฌ๊ธฐ์ ์ํ
์ด๋ธ ํด๋ฆญ
ํ
์ด๋ธ ๋ช
userTBL์ ์์ฑํ ๋ค ์ ์ฉ โ ์ผ์ชฝ ์ด ํด๋ฆญํ์ฌ ์ปฌ๋ผ ์ถ๊ฐ ํ ์
๋ ฅ
์ด๋ฐ์์ผ๋ก
์ฌ์ง๊ณผ ๊ฐ์ด ์ปฌ๋ผ ์์ฑ ์ ์ฉ ํ ํ์ธ ํ๋ฉด ์๋ ์ฌ์ง์ฒ๋ผ ํ
์ด๋ธ์ด ์์ฑ ๋๋ค.
์์ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ ๊ตฌ๋งคํ
์ด๋ธ๋ ์์ฑ
์ฌ์ง๊ณผ ๊ฐ์ด ์ ์ธ๋ํค ํด๋ฆญํ userTBL ํด๋ฆญ ํ buyTBL ํด๋ฆญ (๋๋๊ทธ ์๋!!!)
ํ๋ณ์ ์ด์ userId๋ก ๋ฐ๊พผ ํ
์ ์ฉ ํ ํ์ธ
์ด์ ํ์๊ฐ ์๋๋ผ ์ ํ์ฌํญ์ด ๋จ
(์ฝ๊ฒ ์๊ฐํ๋ฉด ๊ทธ์ ์๋ ๊ฐ์ ํ๋ฉด ๋ฌด์กฐ๊ฑด ๋ฌผ๊ฑด ๊ตฌ๋งคํด์ผํ๋๋ฐ,ํ์๊ฐ์ ํ๊ณ ๋ฌด์กฐ๊ฑด ๋ฌผ๊ฑด์ ๊ตฌ๋งคํ์ง ์์๋ ๋๊ฒ๋ ๋ง๋ค์์.)
์ฌ๊ธฐ์ ์ฌ์ง๊ณผ ๊ฐ์ด ์ฐํด๋ฆญํด์ DDL ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ํ๋ฉด ํ
์ด๋ธ ์์ฑ ์ฟผ๋ฆฌ๊ฐ ๋ณด์ฌ์ง
์ด ์ฟผ๋ฆฌ๋ก ํ
์ด๋ธ ์์ฑํด๋ ๋จ~!
DDL ์์ฑ ํด๋ฆญ ํ, ์์ฑ ํด๋ฆญ
๊ทธ๋ผ Relationa_1์ด ๋์ค๋๋ฐ, ์ฒดํฌํ, ํ์ธ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ๊ฐ ๋์ด
๊ทธํ, ์ ์ฅ(D:\model์ modelSchema.ddl๋ก ์ ์ฅํ๊ณ ์๋ก์ด๊ณ์ ์ผ๋ก ์์ฑํ ddl๋ฅผ ๋ง๋ค๊ฑฐ์.
์ฌ์ฉ์ ์์ฑ (์ฌ์ฉ์ ๋ช
: MODEL , ๊ธฐ๋ณธํ
์ด๋ธ์คํ์ด์ค USERS, ์์ ํ
์ด๋ธ์คํ์ด์ค TEMP๋ก ์ง์ )
๊ทธํ, ๋ถ์ฌ๋ ๋ฃฐ์์ CONNECT, RESOURCE๋ฅผ ์ฒดํฌ(๊ถํ์ด ๋ถ์ฌ๋จ, ๊ธฐ๋ณธ๊ฐ์๋ง!)
๊ทธ๋ฆฌ๊ณ ํ ๋น๋์ USERS ๋ถ๋ถ์ ํ ๋น๋ 10, ๋จ์ M ์
๋ ฅ(10M)
๊ทธ๋ฌ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์์ MODEL์ด ์์ฑ๋๊ฒ์ ํ์ธ ํ ์์๋ค.
๊ทธ ํ, ์ ์์ ๋๋ฌ์(์๋์ฌ์ง) ์ ์ฅํ, ์ ์
๊ทธํ ์ ์ฅํ๋ modelSchema.ddl๋ฅผ ๋ถ๋ฆ(local-model ์ ์)
๊ทธ๋ฌ๋ฉด ํ
์ด๋ธ์ด ์์ฑ๋๊ฒ์ ํ์ธ ํ ์ ์์
์ด๋ ๊ฒ ์ฟผ๋ฆฌ๋ฅผ ํ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์๊ฒ ํ์ผ์ ์ฃผ๊ฑฐ๋ ์๋๋ฉด ํ
์ด๋ธ ์์ฑ ๋ฐ ์ฎ๊ธฐ๊ธฐ ํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๊ฐ๋ฅ(๊ตณ์ด ์ฟผ๋ฆฌ ์คํ๋ด๋ฉด์ ์์ฑํ์ง ์ํด๋ ๋จ)
๋ํ ์์ฝ์ ๋ณด๊ณ , ์ค๋ผํด ๋ฐ์ดํฐ ๋ชจ๋ธ๋ฌ ๋์์ธ์ ์์ฑํ ์๋ ์์
(์๋ ์ฌ์ง ์์๋๋ก ๋ฐ๋ผํ๋ฉด ์์ฑ๋จ
(์๋ฃ ํด๋ฆญ)
๋ณํฉ ํด๋ฆญ
๊ทธ๋ฌ๋ฉด Relationa_1์ ๊ธฐ์กด๊ณผ ๋์ผํ ์๋ก์ด ํ
์ด๋ธ์ ์์ฑ ํ ์ ์์
: ํ ์ด๋ธ์ ์์ฑ๋ค์ ์๋ก ์ข ์์ ์ธ ๊ด๊ณ๋ก, ์ข ์๊ด๊ฒ์ ํน์ฑ์ ํ์ฉํ์ฌ ์ต์ ์ ํ ์ด๋ธ๋ก ๋ถํดํ๋ ๊ณผ์
๋ชฉ์ : ์ค๋ณต ์ ๊ฑฐํ์ฌ ์ด์ํ์(์ฝ์ /์ญ์ /๊ฐฑ์ )์ ๋ฐ์์ ์ค์
์ ๊ทํ ๋จ๊ณ
์์ ๊ฐ์ด ํ
์ด๋ธ ์์ฑ
1.
: ๊ณ ๊ฐ์ ๋ฌด์กฐ๊ฑด ์ฃผ๋ฌธํ์ง ์์๋ ๊ด์ฐฎ์(์ ์ ํ์)
2.
์ฃผ๋ฌธ์ ๋ณด๊ฐ ์๋ค๋๊ฑด ์ฃผ๋ฌธ ํ์์ด ์๋ค๋ ๋ง!
๊ทธ๋์ ๋ฌด์กฐ๊ฑด ํ์(์ค์ )๋ก ์ฒดํฌ๋์ด์์
์ฑ
์ด ๋ค์ด์์ผ์ง ์ฃผ๋ฌธ๋ฒํธ๊ฐ ์์(์ ์ )
์ฃผ๋ฌธ์ ํ์์ง๋ง ๋์ ์ฌ๊ณ ๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์์ ์ ์์
: ๋ ๊ฐ์ ํ ์ด๋ธ์ ์๋ก ๋ฌถ์ด์ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด ๋ด๋ ๊ฒ
SELECT COUNT(*) FROM EMP; --12๊ฑด
SELECT COUNT(*) FROM DEPT; --4๊ฑด
SELECT * FROM EMP;
SELECT * FROM DEPT;
--์นดํฐ์
๊ณฑ(Cartesian Product)
SELECT * FROM EMP,DEPT; --48๊ฑด (12*4)
-- ์ฐ๊ฒฐ๋ key๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๋์ด.
-- ๋ฑ๊ฐ ์กฐ์ธ(EQUI Join)
SELECT *
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO; --12๊ฑด
-- ํ
์ด๋ธ๊ฐ์ ๊ณตํต ์ปฌ๋ผ์ ํ์ฉํ์ฌ
-- ๊ฐ ํ
์ด๋ธ์ ํน์ ์ปฌ๋ผ์ ์ผ์นํ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ฒฐ(๊ต์งํฉ)
-- Oravle Join (์ด๋ฉด์ ๋ฑ๊ฐ ์กฐ์ธ)
SELECT ENAME, DNAME
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO; --12๊ฑด
-- ANSI JOIN (์ด๋ฉด์ ๋ฑ๊ฐ ์กฐ์ธ)
SELECT ENAME, DNAME
FROM EMP A JOIN DEPT B
ON A.DEPTNO = B.DEPTNO; --12๊ฑด
SELECT A.NAME "STU_NAME", B.NAME "PROF_NAME"
FROM STUDENT A, PROFESSOR B
WHERE A.PROFNO = B.PROFNO;
๋ ๋ค ๋์ผํจ
SELECT A.NAME "STU_NAME", B.NAME "PROF_NAME"
FROM STUDENT A JOIN PROFESSOR B
ON A.PROFNO = B.PROFNO;
-- 2๊ฐ์ง ์ผ์ด์ค(ํ์ ๋ถ์๋ฒํธ1, ๊ต์ ๋ถ์๋ฒํธ)
SELECT A.NAME "STU_NAME"
, B.NAME "PROF_NAME"
, C.DNAME DEPARTMENT
FROM STUDENT A
JOIN PROFESSOR B
ON A.PROFNO = B.PROFNO
JOIN DEPARTMENT C
ON A.DEPTNO1 = C.DEPTNO; --15๊ฑด , ๊ธฐ์ค ํ
์ด๋ธ์ STUDENT๋ก ์ก์
SELECT A.NAME "STU_NAME", B.NAME "PROF_NAME"
FROM STUDENT A , PROFESSOR B, DEPARTMENT C
WHERE A.PROFNO = B.PROFNO
AND B.DEPTNO = C.DEPTNO
ORDER BY A.NAME; --15๊ฑด , ๊ธฐ์ค ํ
์ด๋ธ์ PROFESSOR๋ก ์ก์
SELECT A.NAME "STU_NAME", B.NAME "PROF_NAME"
FROM STUDENT A , PROFESSOR B, DEPARTMENT C
WHERE A.PROFNO = B.PROFNO
AND A.DEPTNO1 = C.DEPTNO
AND B.DEPTNO = C.DEPTNO
ORDER BY A.NAME; --14๊ฑด(์ฌ์ง๊ณผ ๋ค๋ฆ)
-- ์ด๋ฐ ๋ฐ์ดํฐ ์ฐจ์ด๊ฐ ๋๋ ์ด์ : ๊ธฐ์ค ํ
์ด๋ธ์ด ์ฐจ์ด ๋๊ธฐ ๋๋ฌธ
SELECT * FROM STUDENT; --Steve Martin 201 4003
SELECT * FROM DEPARTMENT;
SELECT * FROM PROFESSOR; --Nicole Kidman 202
-- ์ฌ๊ธฐ์ ์ฐจ์ด๊ฐ ๋จ. ๊ทธ๋์ ๊ธฐ์ค ํ
์ด๋ธ์ ๋ฐ๋ผ์ ๊ฐ์ด ๋ค๋ฅด๊ฒ ๋์ฌ ์์๋ค.
๋ณธ์ธ์
SELECT A.NAME "STU_NAME"
, B.NAME "PROF_NAME"
, C.DNAME DEPARTMENT
FROM STUDENT A
JOIN PROFESSOR B
ON A.PROFNO = B.PROFNO
JOIN DEPARTMENT C
ON A.DEPTNO1 = C.DEPTNO;
๋ฐฉ๋ฒ ์ฌ์ฉ
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S
JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO
-- WHERE S.DEPTNO1=101 ;
AND S.DEPTNO1=101;
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S
, PROFESSOR P
WHERE S.PROFNO = P.PROFNO
AND S.DEPTNO1=101;
๋ด ๋ฐฉ๋ฒ
SELECT C.GNAME "CUST_NAME"
, TO_CHAR(POINT,'999,999')"POINT"
, G.GNAME "GIFT_NAME"
FROM CUSTOMER C, GIFT G
WHERE G_START< POINT AND POINT<G_END;
SELECT C.GNAME "CUST_NAME"
, TO_CHAR(POINT,'999,999')"POINT"
, G.GNAME "GIFT_NAME"
FROM CUSTOMER C JOIN GIFT G
ON G_START< POINT AND POINT<G_END;
๊ฐ์ฌ๋ ๋ฐฉ๋ฒ(BETWEEN ..AND )
-- ๋น๋ฑ๊ฐ ์กฐ์ธ (Non-Equi Join)
SELECT C.GNAME "CUST_NAME"
, TO_CHAR(POINT,'999,999')"POINT"
, G.GNAME "GIFT_NAME"
FROM CUSTOMER C , GIFT G
WHERE C.POINT BETWEEN G_START AND G_END;
SELECT S.NAME "STU_NAME"
, C.TOTAL
, H.GRADE "CREDIT"
FROM STUDENT S, SCORE C ,HAKJUM H
WHERE S.STUDNO = C.STUDNO
AND C.TOTAL BETWEEN MIN_POINT AND MAX_POINT;
SELECT S.NAME "STU_NAME"
, C.TOTAL
, H.GRADE "CREDIT"
FROM STUDENT S, SCORE C ,HAKJUM H
WHERE S.STUDNO = C.STUDNO
AND C.TOTAL >= MIN_POINT
AND C.TOTAL <= MAX_POINT;
-- LEFT (OUTER) JOIN
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+);
-- (+)๋ฅผ ํ๋ฉด NULL์ด ์ถ๋ ฅ๋จ.
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+);
-- (+)๋ฅผ ํ๋ฉด NULL์ด ์ถ๋ ฅ๋จ.
-- (INNER) JOIN = EQUI JOIN
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S, PROFESSOR P
WHERE S.PROFNO = P.PROFNO;
์ ์ฌ์ง ์ฒ๋ผ ์ฟผ๋ฆฌ ์ง๋ผ
(์ฐธ๊ณ ์ฟผ๋ฆฌ)
SELECT NAME
FROM STUDENT; --20๊ฑด
SELECT NAME
FROM PROFESSOR; --16๊ฑด
๋ด๊ฐ ํ ๋ฐฉ๋ฒ(์์นํจ.)
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S FULL JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO
ORDER BY S.NAME ;
๊ต์๋ ๋ฐฉ๋ฒ
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S ,PROFESSOR P
WHERE S.PROFNO = P.PROFNO(+)
UNION
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S ,PROFESSOR P
WHERE S.PROFNO(+) = P.PROFNO;
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
SELECT S.NAME "STU_NAME"
, P.NAME "PROF_NAME"
FROM STUDENT S FULL OUTER JOIN PROFESSOR P
ON S.PROFNO = P.PROFNO ;
SELECT * FROM EMP;
์ฐธ๊ณ ํ์ฌ ์๋ ์ฌ์ง์ฒ๋ผ ์ถ๋ ฅํ์์ค
-- SELF JOIN
SELECT A.EMPNO "ENO"
, A.ENAME "ENAME"
, B.EMPNO "MGRNO"
, B.ENAME "MGR_NAME"
FROM EMP A ,EMP B
WHERE A.MGR = B.EMPNO;
-- ANSI JOIN
SELECT NAME "STU_NAME"
, DEPTNO1
, DNAME "DEPT_NAME"
FROM STUDENT A JOIN DEPARTMENT B
ON A.DEPTNO1 = B.DEPTNO;
-- Oravle Join
SELECT NAME "STU_NAME"
, DEPTNO1
, DNAME "DEPT_NAME"
FROM STUDENT A, DEPARTMENT B
WHERE A.DEPTNO1 = B.DEPTNO;
SELECT A.NAME
, B.POSITION
, TO_CHAR(A.PAY,'999,999,999')"PAY"
, TO_CHAR(B.S_PAY,'999,999,999')"Low PAY"
, TO_CHAR(B.E_PAY,'999,999,999')"High PAY"
FROM EMP2 A ,P_GRADE B
WHERE A.POSITION = B.POSITION;