select절과 조인절 질문있습니다 0 1 270

by 오린이! [Oracle 기초] select join [2017.06.06 17:07:18]


학생테이블 학과코드 학년 학번 성명 주민 주소 전번 이메일 재학 입학일자

과목테이블 과목코드 과목명 인정학점수 담당교수번호 연계과목코드

수강테이블 수강아이디 학번 과목코드 중간성적 기말성적 과제성적 등급 재수강 성적취득일자  이렇게 테이블이 존재하구요

담당교수가 p020167인 과목을 수강한 학생중에 기말고사 최고 득점자 이름학번 출력 이게 질문인데요

select 이름 학번 from 학생테이블

where 기말성적 = (select MAX(기말성적) from 수강테이블
where select 담당교수 from 과목테이블 where 담당교수번호 = p020167)인거 같앗는데 .. 어디가 잘못됫을까요

아니면 조인을 사용해야하나요 ??

 

by 마농 [2017.06.06 23:05:13]
SELECT 학번
     , 성명
  FROM (SELECT c.학번
             , c.성명
             , RANK() OVER(ORDER BY a.기말성적 DESC) rk
          FROM 수강테이블 a
             , 과목테이블 b
             , 학생테이블 c
         WHERE a.과목코드 = b.과목코드
           AND a.학번 = c.학번
           AND b.담당교수번호 = 'p020167'
        )
 WHERE rk = 1
;

SELECT c.학번
     , c.성명
  FROM 수강테이블 a
     , 과목테이블 b
     , 학생테이블 c
 WHERE a.과목코드 = b.과목코드
   AND a.학번 = c.학번
   AND b.담당교수번호 = 'p020167'
   AND a.기말성적 = (SELECT MAX(a.기말성적)
                       FROM 수강테이블 a
                          , 과목테이블 b
                      WHERE a.과목코드 = b.과목코드
                        AND b.담당교수번호 = 'p020167'
                     )
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입