경진의 블로그

SUB QUERY, INLINE VIEW, RANK 연습문제(한과세트) 본문

자바개발과정/오라클(Oracle)

SUB QUERY, INLINE VIEW, RANK 연습문제(한과세트)

aith 2008. 5. 23. 22:29
SUB QUERY & INLINE VIEW 연습문제 (덤으로 RANK)

첨부 파일


문제1
영화 티켓을 받을 수 있는 사람의 명단과 현재 가지고 있는 포인트, 영화 티켓의 포인트 그리고 그 티켓을 사용한 후 남은 예상 포인트를 출력하자.

SELECT b.name_vc 이름
     , b.point_nu 보유
     , a.point_nu 적용
     , b.point_nu - a.point_nu "남은 예상"
  FROM t_giftpoint a
     , t_giftmem b
 WHERE b.point_nu > a.point_nu
   AND a.name_vc = '영화티켓';
  
문제2 (꼭 기억해야함!! ★★★★★)
김유신씨가 보유하고 있는 마일리지 포인트로 얻을 수 있는 상품 중 가장 포인트가 높은 것은 무엇인가?
핵심) 김유신씨가 가지고 있는 포인트 보다 작은 것들 중 가장 높은 포인트를 요구하는 상품은 무엇인가?

본인 풀이 과정 (개판이다)

SELECT point_nu FROM T_GIFTMEM
 WHERE name_vc = '김유신';

SELECT * FROM T_GIFTPOINT

SELECT A.point_nu, B.point_nu
  FROM (SELECT point_nu FROM T_GIFTPOINT) A,
       (SELECT point_nu FROM T_GIFTMEM WHERE name_vc = '김유신') B
 WHERE A.point_nu <= B.point_nu;

SELECT C.name_vc, C.point_nu
  FROM T_GIFTPOINT C
 WHERE C.point_nu = ( SELECT max(A.point_nu)
                        FROM (SELECT name_vc, point_nu FROM T_GIFTPOINT) A
                           , (SELECT point_nu FROM T_GIFTMEM WHERE name_vc = '김유신') B
                       WHERE A.point_nu BETWEEN A.point_nu and B.point_nu);

모범 답안!

SELECT max(a.name_vc)
     , max(a.point_nu)
  FROM t_giftpoint a
     , t_giftmem b
 WHERE a.point_nu < b.point_nu
   AND b.name_vc = '김유신';

SELECT name_vc
     , point_nu
  FROM t_giftpoint
 WHERE point_nu = (SELECT max(a.point_nu)
                     FROM t_giftpoint a
                        , t_giftmem b
                    WHERE a.point_nu < b.point_nu
                      AND b.name_vc = '김유신');

첨부 파일


문제3
이들 데이터의 작업시간이 짧게 걸리는 시간 순서대로 1부터 15까지의 순위를 매겨서 출력한다.
      
RANK()라는 분석용 함수를 사용할 경우이다.
           
SELECT workcd_vc
     , time_nu
     , rank() over(order by time_nu) rnk
  FROM t_worktime;
0 Comments
댓글쓰기 폼