ホームページ  >  記事  >  データベース  >  Oracle で重複レコードを削除する方法

Oracle で重複レコードを削除する方法

PHPz
PHPzオリジナル
2023-04-17 09:19:462798ブラウズ

Oracle は世界最大のリレーショナル データベース管理システムの 1 つであり、その強力な機能と幅広いアプリケーションにより、エンタープライズ レベルのアプリケーションに不可欠な要素となっています。これらのアプリケーションでは、データ重複排除が一般的なタスクです。重複レコードを削除すると、データ品質が向上し、ストレージ容量とクエリ時間が削減されます。

Oracle では、複数の方法を使用して重複レコードを削除できます。

  1. DISTINCT キーワード

DISTINCT キーワードを使用して、一意の結果セットを返します。つまり、重複するレコードは存在しません。たとえば、次のクエリはすべての個別の顧客名を返します:

SELECT DISTINCT CUSTOMER_NAME FROM CUSTOMERS;

  1. GROUP BY 句

GROUP BY 句が使用されています。グループ化に使用し、グループごとに 1 つの行を返します。いくつかの列を組み合わせることで、一意の値を見つけることができます。たとえば、次のクエリは各都市の顧客数を返します:

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

  1. Eliminate Duplicate Rows Function

Oracle には、次のような重複レコードを排除するためのいくつかの組み込み関数が含まれています。

  • MIN(): グループ化内の最小値を返します。
  • MAX(): グループ内の最大値を返します。
  • AVG(): グループ内の平均値を返します。
  • SUM(): グループ内の値の合計を返します。

次のクエリは、customers テーブルの一意のアドレスの数を返します:

SELECT COUNT(DISTINCT ADDRESS) FROM CUSTOMERS;

  1. Use window関数

ウィンドウ関数は、個々の行ではなく結果セット全体の値を計算する特別な関数です。ウィンドウ関数を使用して、元のデータを保持しながら重複レコードを削除します。

次のクエリは、重複した販売レコードを保持せずに、販売時間で並べ替えられた過去 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;

概要

Oracle には、DISTINCT キーワード、GROUP BY 句、重複行の削除関数など、重複レコードを削除するためのメソッドが多数あります。ウィンドウ関数。これらの方法を使用すると、データ品質が向上し、ストレージ容量とクエリ時間が削減されます。

以上がOracle で重複レコードを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。