IT정리노트

블로그 이미지

Edward. K

메멘토적 기억능력을 소유한 개발자 노트.

MAX, CASE , DECODE, group by.

DB/Oracle 2008. 10. 28. 12:23
반응형


 ORACLE CASE [http://eknote.tistory.com/851]  에서 한단계 업그레이드된 Query 문을 공부해보자.

  LEVEL_PROGRESS
          |_  user_id              :  플레이어 ID 
          |_  part                   : 레벨명
          |_  end_date            : 레벨업을 위한 완료일 ( 해당 기간내에 미션을 클리어 해야함 )
          |_  complete_date    : 레벨 종료 여부 ( 종료일을 기록 )
  
  LEVEL_INFO
          |_  user_id              :  플레이어 ID  
          |_  level_name        : 레벨명
          |_  user_Team        : 유저가 속한 TEAM ( factory)
          |_  reg_date            :  레벨업 도전 시작일
          |_  stat                   : 현재 레벨상태 
                                           - STANDBY   : 진행 STANDBY
                                           - ONE   : 레벨 1 종료
                                           - TWO   : 레벨 2 종료
                                           - THREE  : 레벨 3 종료  ( 승인 대기 )
                                           - CL    : 레벨 완료 승인

  USER_INFO
          |_  user_id              :  플레이어 ID  
          |_ user_name          : 유저이름
          |_ team_code          : 팀코드
          |_ manager_yn        : 팀장 여부 ( Y: 팀장, N: 팀원 )


2. 다음 데이터를 가지고 있다.
    LEVEL_PROGRESS    완료되었을 경우에만 complete_date가 등록된다.
  |_ userId,   'ONE', date, date     - ONE 단계를 완료 했다.
  |_ userId,  'TWO, date,             - TWO 단계를 진행중이다.

3. 원하는 데이터는 다음과 같다.
   모든 회원들의 정보를 가져와서. 각 회원별 레벨업 상태를 보여달라.
   검색 조건은 원하는 팀만 선택하여 정보를 가져올수 있도록 한다.


4. Query

SELECT   LI.user_id userId                                 -- 이슈 ID
    , LI.level_name levelTitle                                -- 이슈 제목
    , (  SELECT  user_name
       FROM  USER_INFO
      WHERE  user_id= LI.user_id AND manager_yn='Y'
      ) teamManager                                    --  팀장명
    , TO_CHAR(LI.reg_date,'YYYY.MM.DD') registerDate                -- 레벨업 도전 시작일
    , DECODE(LI.stat,'CL','완료','THREE','레벨업 진행중','') clStatus                  -- 종료승인 여부
    , max(  DECODE(  LP.part, 'ONE'
             , TO_CHAR(LP.end_date,'YYYY.MM.DD') 
            ) 
        ) scheduleDateONE                                 -- STEP 1 완료 예정일
    , max
      (
      DECODE ( LP.part, 'ONE',
           DECODE( LP.complete_date, null,
                (
                 CASE
                   WHEN  to_char(sysdate,'YYYYMMDD') > to_char(LP.end_date,'YYYYMMDD')
                   THEN  'D'  -- 지연
                   ELSE  'I'  -- 진행중
                 END
                 ),'C'       --   레벨완료
               )
          )
      ) statusONE                                        -- STEP 1  레벨업  현황
    , max( DECODE (  LP.part, 'TWO'
             , TO_CHAR(LP.end_date,'YYYY.MM.DD')
             )
        ) scheduleDateTWO                                 -- 원STEP 2 완료 예정일
    , max
      (
      DECODE ( LP.part, 'TWO',
           DECODE( LP.complete_date, null,
                (
                 CASE
                   WHEN  to_char(sysdate,'YYYYMMDD') > to_char(LP.end_date,'YYYYMMDD')
                   THEN  'D'  -- 지연
                   ELSE  'I'  -- 진행중
                 END
                 ),'C'       --   레벨완료
               )
          )
      ) statusTWO                                        -- STEP 2 레벨업  현황
    , max( DECODE(   LP.part, 'THREE'
            , TO_CHAR(LP.end_date,'YYYY.MM.DD')
           )
        ) scheduleDateTHREE                                 -- STEP 3 완료 예정일
    , max
      (
      DECODE ( LP.part, 'THREE',
           DECODE( LP.complete_date, null,
                (
                 CASE
                   WHEN  to_char(sysdate,'YYYYMMDD') > to_char(LP.end_date,'YYYYMMDD')
                   THEN  'D' -- 지연
                   ELSE  'I'  -- 진행중
                 END
                 ),'C'       --   레벨완료
               )
          )
      )  statusTHREE                                       -- STEP 3 레벨업  현황
  FROM  LEVEL_INFO       LI
    ,LEVEL_PROGRESS  LP
WHERE  TO_CHAR(LI.reg_date,'YYYYMMDD') BETWEEN '20080101' AND '20080201'
    AND LI.stat in('STANDBY','ONE','TWO','THREE','CL')  
    AND LI.user_id = LP.user_id
    AND LI.user_Team in('','')
GROUP BY LI.user_id,LI.level_name,LI.reg_date,LI.stat
ORDER BY userId desc

  선택된 팀에 대한 회원별 레벨 현황을 보여주기 위한 쿼리가 완성되었다.
 max 와 Group By에 대한 이해가 주 목적이다..

반응형
Posted by Edward. K
블로그 이미지

메멘토적 기억능력을 소유한 개발자 노트.

by Edward. K

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

  • Flash Player
  • rocketdock
  • 이미지 편집
  • 개한민국
  • iBATIS
  • 이클립스
  • Eclipse
  • 미네르바
  • 사업 이야기
  • 캡쳐툴
  • flex
  • egov
  • 플래시 게임
  • tomcat
  • 중독성게임
  • EditPlus
  • netbeans
  • Jboss
  • STS
  • 전자정부프레임워크
  • 컴퓨터 관리
  • EkNote
  • 색상코드표
  • 가상화폐무료
  • toad
  • android
  • eclipse plugin
  • sqlgate
  • Graphic
  • ERwin

글 보관함

«   2026/01   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

카테고리

분류 전체보기 (792)
행운이와함께 (1)
EkNote Project (18)
ARIS (0)
Android (2)
LINK (39)
UML (9)
Programming (154)
Cobol (0)
ASP (0)
CSS (5)
C_C++ (2)
IBatis (2)
JSP (3)
JAVA (76)
JavaScript (44)
PHP (2)
Utility (76)
Protable (3)
MobileProgram (4)
SKT (0)
KTF (0)
LGT (0)
자료들 (4)
DB (82)
mongoDB (0)
MySQL (8)
Oracle (61)
MSSQL (4)
Graphic (8)
Flash (3)
PhotoShop (3)
SourceFactory (4)
Collection (73)
작가의기막힌상상력 (14)
미소를찾아보는공간 (44)
내심장은작동중일까 (6)
멀더와스컬리의노트 (3)
이건어디에사용할까 (6)
Edward (275)
나만 알기엔 아까워 (100)
기억하기 위한 기록 (123)
시선이 머무는 공간 (50)
숨기고 싶은 이야기 (2)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
Edward. K's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

IT정리노트

메멘토적 기억능력을 소유한 개발자 노트.

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 분류 전체보기 (792)
    • 행운이와함께 (1)
    • EkNote Project (18)
    • ARIS (0)
    • Android (2)
    • LINK (39)
    • UML (9)
    • Programming (154)
      • Cobol (0)
      • ASP (0)
      • CSS (5)
      • C_C++ (2)
      • IBatis (2)
      • JSP (3)
      • JAVA (76)
      • JavaScript (44)
      • PHP (2)
    • Utility (76)
      • Protable (3)
    • MobileProgram (4)
      • SKT (0)
      • KTF (0)
      • LGT (0)
      • 자료들 (4)
    • DB (82)
      • mongoDB (0)
      • MySQL (8)
      • Oracle (61)
      • MSSQL (4)
    • Graphic (8)
      • Flash (3)
      • PhotoShop (3)
    • SourceFactory (4)
    • Collection (73)
      • 작가의기막힌상상력 (14)
      • 미소를찾아보는공간 (44)
      • 내심장은작동중일까 (6)
      • 멀더와스컬리의노트 (3)
      • 이건어디에사용할까 (6)
    • Edward (275)
      • 나만 알기엔 아까워 (100)
      • 기억하기 위한 기록 (123)
      • 시선이 머무는 공간 (50)
      • 숨기고 싶은 이야기 (2)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바