300x250
728x90

# 데이터 중복제거 


# 인터널테이블을 중복제거 해야하는 경우가 있을 수 있다.

 

방법은 내가 알기로는 2가지가 있다..!

1. DELETE ADJACENT DUPLICATES FROM 구문

2. SELECT DISTINCT 구문

 

 

# 우선 속도를 비교해보면? ( SFLIGHT Table )

1.DELETE ADJACENT DUPLICATES FROM 구문

 

2. SELECT DISTINCT 구문 

 

 

근데 차이점

 

DELETE ADJACENT DUPLICATES FROM중복 제거 할 필드설정하고 나머지 값에 대한 데이터를 가지고 있지만,

 

SELECT DISTINCT중복 제거 할 필드설정 할 순 있지만, 나머지 값다 못 가져오는 경우가 생겨버린다.

 

한마디로 SELECT DISTINCT특정 필드만 가져오기 때문에 이러한 차이점이 생겨버린다. 

 

 


# SELECT에서 중복 제거 할 특정 필드다른 값들도 가져오는 방법을 알아보자. 

# 사실 Group지정해줘서 합쳐지는거지만 중복 제거처럼 보인다!  #


 

 

# SELECT DISTINCT 응용


# ( SFLIGHT )에서 CARRID, CONNID중복제거 하고 나머지 필드가져오는 예제가 있다고 해보자.

 

# GROUP BYMAX로 SELECT 가져오기! 

 

여기서는 DISTINCT를 사용하지 않고 GROUP BY를 사용한다. ( 중복 제거 할 필드 ORDER BY로 생각해보자 )

 

# 01. 중복제거 할 필드GROUP BY로 설정해보자.

 

# 02. 나머지 값들은 MAX로 설정해보자.( 상황에 따라서 [ MAX, MIN, AVG, SUM, COUNT ]를 사용하면 된다.  )

DATA:
  GT_LIST TYPE TABLE OF SFLIGHT.

SELECT
  CARRID
  CONNID
  MAX( FLDATE     ) AS FLDATE
  MAX( PRICE      ) AS PRICE
  MAX( CURRENCY   ) AS CURRENCY
  MAX( PLANETYPE  ) AS PLANETYPE
  MAX( SEATSMAX   ) AS SEATSMAX
  MAX( SEATSOCC   ) AS SEATSOCC
  MAX( PAYMENTSUM ) AS PAYMENTSUM
  MAX( SEATSMAX_B ) AS SEATSMAX_B
  MAX( SEATSOCC_B ) AS SEATSOCC_B
  MAX( SEATSMAX_F ) AS SEATSMAX_F
  MAX( SEATSOCC_F ) AS SEATSOCC_F

  FROM SFLIGHT
  INTO CORRESPONDING FIELDS OF TABLE GT_LIST
  GROUP BY
    CARRID CONNID.

 

# 03. 실행을 해보면? 다음과 같이 CARRID, CONNID 중복 제거하고 나머지 값들은 가져오게 된다.

 

끝!

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90