오라클

오라클연습

사라링 2012. 5. 8. 18:39

--(반장님꺼)
-- 대상테이블 : 회원정보테이블
-- 조회컬럼   : 회원아이디 Id, 회원이름 성명, 회원성별 성별, 회원의 결혼유무(회원기념일의 데이터를근거로)를
--              유추해서 출력(decode이용) 결혼유무, 회원의 메일서버계정은 'naver.com'으로 일괄변경,
--              회원의 주민번호1을 이용해 'yy년도mm월dd일출생'으로 출력, 주민번호2의 2번째인덱스에서 4개로
--              출생신고지역코드 출력,
--              주민번호의 유효성검사후 '유효' 또는 '무효' 출력
--              예시) 123456-1234563 =>  1 2 3 4 5 6 1 2 3 4 5 6     3(매직넘버)
--                                     *2 3 4 5 6 7 8 9 2 3 4 5
--                                                   --------------------
--                                                     2+6+12+.................+30 = 206   => 206을 11로 나눈 나머지를 11에서 빼기하고, 그 수를 다시
--                                                                                            10으로 나눈 나머지가 주민번호 마지막수와 일치하면 유효주민번호
-- 정렬       : 회원아이디 내림차순
select * from member;
select (to_number(substr(mem_regno1,1,1))*2) from member;
select mem_id id,mem_name 성명,
       case when substr(mem_regno2,1,1)=1 then '남'
       else '여'
       end 성별,
       case when substr(mem_memorial,1,2)='결혼'  then '기혼'
       when substr(mem_memorial,1,2)='아내' then '기혼'
       when substr(mem_memorial,1,2)='남편' then '기혼'
       else '미혼'
       end 결혼유무,
       regexp_substr(mem_mail,'[a-zA-Z0-9]+')||'@naver.com' 메일,
       substr(mem_regno1,1,2)||'년도'||substr(mem_regno1,3,2)||'월'||substr(mem_regno1,5,2)||'일출생' 생년월일,
       decode(
       ( mod(11-mod(
       (to_number(substr(mem_regno1,1,1))*2)+(  to_number(substr(mem_regno1,2,1))*3 )+(  to_number(substr(mem_regno1,3,1))*4  )+
       ( to_number(substr(mem_regno1,4,1))*5  )+(  to_number(substr(mem_regno1,5,1))*6  )+( to_number(substr(mem_regno1,6,1))*7 )+
       ( to_number(substr(mem_regno2,1,1))*8 )+( to_number(substr(mem_regno2,2,1))*9 )+( to_number(substr(mem_regno2,3,1))*2 )+
       ( to_number(substr(mem_regno2,4,1))*3 )+( to_number(substr(mem_regno2,5,1))*4 )+( to_number(substr(mem_regno2,6,1))*5 )
       ,11),10)  )
       ,to_number(substr(mem_regno2,7,1)) ,'적합','부적합') 주민번호적합여부
from member order by 1;

 

--(반장님꺼)
--대상테이블 : 회원정보테이블, 장바구니테이블
--대상컬럼   : 회원아이디 아이디, 회원이름 성명, 구매번호 구매번호,
--            구매번호에서 구매년도 추출 구매년,
--            구매금액의합 (구매수량*판매가) 널인경우 0으로해서 천단위
--           출력형태, 원화표시 출력 구매금액
--조건      : 회원아이디가 'r001'이고 회원의 주소가 '대전',
--           구매금액은 50000000 이하
--정렬      : 회원아이디 오름차순
select substr(cart_no,1,4) 구매년 from cart;

nvl(to_char(sum(cart_qty*prod_sale),'999,999,999,999,999.00L'),0) 구매금액의합
select * from member;
select * from cart where cart_member='r001';
select * from prod;
select mem_id 아이디,mem_name 성명,cart_no 구매번호,
      substr(cart_no,1,4) 구매년,
       nvl(to_char(sum(cart_qty*prod_sale),'999,999,999,999,999L'),0) 구매금액의합
from member left outer join cart on(mem_id=cart_member)
    left outer join prod on(prod_id=cart_prod)
where mem_add1 like '대전%'
      and mem_id='r001'
group by mem_id,mem_name,cart_no
having sum(cart_qty*prod_sale)<=50000000
order by 1;

이 글은 스프링노트에서 작성되었습니다.