SELF JOIN : 필요한 정보가 한 테이블안에 다 있긴 한데 원하는 결과를 출력하려면, join을 써야 할 때
temp 테이블을 사용해 사번 ,성명 , 생일 , 자신보다 생일이 빠른 사람수를 조회하여 자신보다 생일이 빠른 사람수 순서대로 오름차순으로 정렬해서 출력하세요
연습문제
교수 테이블에서 학과번호 ,교수 이름, 교수 별 지도 학생 수 , 학과별 소계학생수, 총 학생수를 출력하세요
temp 테이블을 사용해 사번 ,성명 , 생일 , 자신보다 생일이 빠른 사람수를 조회하여 자신보다 생일이 빠른 사람수 순서대로 오름차순으로 정렬해서 출력하세요
1 select emp1.emp_id, emp1.emp_name, 2 count(emp2.birth_date) 빠른사람수 3 from temp emp1, temp emp2 4 where emp2.birth_date(+) < emp1.birth_date 5 group by emp1.emp_id, emp1.emp_name 6* order by 3 EMP_ID EMP_NAME 빠른사람수 ---------- ---------- ---------- 19960303 설까치 0 19966102 지문덕 1 19930402 강감찬 2 19960212 배뱅이 3 19960101 홍길동 4 19950303 이순신 5 19970101 김길동 6 ...... 20006106 유도봉 15 20000407 윤주왕 16 20000308 강월악 17 20000119 장금강 18 20000210 나한라 19 20 rows selected.(OUTER JOIN 과 SELF JOIN 사용함을 알 수 있다.)
연습문제
교수 테이블에서 학과번호 ,교수 이름, 교수 별 지도 학생 수 , 학과별 소계학생수, 총 학생수를 출력하세요
1 select p.deptno, p.name, count(s.name) 2 from student s, professor p 3 where p.profno = s.profno 4* group by rollup(p.name, p.deptno) SQL> / DEPTNO NAME COUNT(S.NAME) ---------- ---------- ------------- 102 권혁일 3 권혁일 3 101 성연희 2 성연희 2 101 이만식 1 이만식 1 201 이재우 1 이재우 1 101 전은지 3 전은지 3 10 11 rows selected.
'Oracle > SQL' 카테고리의 다른 글
2012.01.09 SQL 5일차(연습노트 ; sub query) max,min 안쓰고 최소값, 최대값, 등등 (0) | 2012.01.10 |
---|---|
2012.01.09 SQL 5일차 두번째(Sub Query) (0) | 2012.01.10 |
2012.01.06 SQL 4일차(연습노트,non-equi의 조건이 간단하지 않은 것들) (0) | 2012.01.09 |
2012.01.06 SQL 4일차(정규화, JOIN중 카티션곱, EQUI, NON-EQUI, OUTER JOIN) (0) | 2012.01.09 |
2012.01.05 SQL 3일차(연습노트) ; 그룹함수테크닉,rollup이용,cube이용, having이용예 등등 (0) | 2012.01.09 |