>  기사  >  데이터 베이스  >  Oracle에서 중복 레코드를 제거하는 방법

Oracle에서 중복 레코드를 제거하는 방법

PHPz
PHPz원래의
2023-04-17 09:19:462849검색

Oracle은 세계에서 가장 큰 관계형 데이터베이스 관리 시스템 중 하나입니다. 강력한 기능과 광범위한 애플리케이션으로 인해 엔터프라이즈 수준 애플리케이션에 없어서는 안될 부분입니다. 이러한 애플리케이션에서는 데이터 중복 제거가 일반적인 작업입니다. 중복된 기록을 제거하면 데이터 품질이 향상되고 저장 공간과 쿼리 시간이 단축됩니다.

Oracle에서는 여러 가지 방법을 사용하여 중복 레코드를 제거할 수 있습니다.

  1. DISTINCT 키워드

DISTINCT 키워드를 사용하면 고유한 결과 집합이 반환되므로 중복 레코드가 없습니다. 예를 들어, 다음 쿼리는 모든 개별 고객 이름을 반환합니다.

SELECT DISTINCT CUSTOMER_NAME FROM CUSTOMERS;

  1. GROUP BY 절

GROUP BY 절은 그룹화에 사용되며 각 그룹에 대해 단일 행을 반환합니다. 일부 열을 결합하면 고유한 값을 찾을 수 있습니다. 예를 들어, 다음 쿼리는 각 도시의 고객 수를 반환합니다.

SELECT CITY, COUNT(*) FROM CUSTOMERS GROUP BY CITY;

  1. 중복 행 제거 기능

Oracle에는 중복 행 제거 기능이 내장되어 있습니다. 중복 레코드, 예:

  • MIN(): 그룹의 최소값을 반환합니다.
  • MAX(): 그룹의 최대값을 반환합니다.
  • AVG(): 그룹의 평균 값을 반환합니다.
  • SUM(): 그룹에 있는 값의 합계를 반환합니다.

다음 쿼리는 고객 테이블의 고유 주소 수를 반환합니다.

SELECT COUNT(DISTINCT ADDRESS) FROM CUSTOMERS;

  1. 윈도우 함수 사용

윈도우 함수는 전체를 계산하는 특수 함수입니다. 별도의 행이 아닌 결과 집합 값입니다. 원본 데이터를 유지하면서 중복 레코드를 제거하려면 창 기능을 사용하십시오.

다음 쿼리는 중복된 판매 기록을 유지하지 않고 판매 시간별로 정렬된 지난 20개의 판매 기록을 반환합니다.

SELECT * FROM (
SELECT

ROW_NUMBER() OVER(PARTITION BY SALE_DATE ORDER BY SALE_AMOUNT DESC) RN,
SALE_ID, 
SALE_AMOUNT, 
SALE_DATE

FROM

SALES

) WHERE RN <= 20;

Summary

Oracle에는 DISTINCT 키워드, GROUP BY 절, 중복 행 제거 기능 및 창 기능을 포함하여 중복 레코드를 삭제하는 다양한 방법이 있습니다. 이러한 방법을 사용하면 데이터 품질을 향상시키고 저장 공간과 쿼리 시간을 줄일 수 있습니다.

위 내용은 Oracle에서 중복 레코드를 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.