SQLで重複データを削除するいくつかの方法、まとめてお伝えします

198268598ef7e4ed727be680e98ddbe0.png

SQL を使用してデータを抽出および分析する場合、データが重複しているシナリオに遭遇することが多く、重複排除後にデータを分析する必要があります。

eコマース企業の売上報告書を例にとると、重複排除の一般的な方法としてdistinctまたはgroup byステートメントを使用していますが、今回は、ウィンドウ関数を使用してデータを重複排除する新しい方法を紹介します。

798ec981fc6d173fe1a8126894419261.jpeg

【フィールド説明】

訪問者ID:babyを閲覧するために入店したお客様

閲覧時間:訪問者がストアの閲覧ページに入った日付

閲覧時間: 訪問者がページを閲覧するためにストアに入る時間の長さ

ここで、ストア内の各訪問者と、対応する閲覧日を知る必要があります (同じ日に複数回閲覧したすべての訪問者が 1 つのレコードとしてカウントされます)。

【問題解決アイデア】

方法 1: 個別

SQL は次のように記述します。

select distinct 访客id ,浏览时间 
     from 淘宝日销售数据表;

検索結果:

dab47d2366d2372c7c2c0535bca5a709.png

distinct ステートメントを使用して複数のフィールドを重複排除する場合は、次の 2 つの点に特に注意する必要があります。

1) 個別の構文は、単一フィールドおよび複数フィールドの重複排除の場合、最初のクエリ フィールドの前に配置する必要があることを規定しています。

2) テーブル内の複数のフィールドが重複排除されている場合、重複排除プロセスは、複数のフィールド全体を重複排除することです. たとえば、上記の例では、訪問者 ID だけではなく、訪問者 ID と閲覧時間を全体として重複排除します. 重複排除後、名前は個別に重複排除されるため、同じ訪問者 ID が異なる閲覧時間に対応します。

方法2:group by

SQL は次のように記述します。

select 访客id ,浏览时间
     from 淘宝日销售数据表
group by 访客id ,浏览时间;

検索結果:

3312a59357df9cad3dece2a20e4e6682.png

group by グループ訪問者 ID と閲覧時間. グループ化と集計後、テーブルの行数が変更されます. 行には 1 つのカテゴリしかありません. group by を使用した後、訪問者 ID と閲覧時間は次のように保持されます.分類され、重複は表示されません。

方法 3: ウィンドウ関数

ウィンドウ関数を使用して重複排除を行う場合、distinct や group by よりも少し複雑になります. ウィンドウ関数は、元のテーブルの行数を減らすのではなく、グループ化後にフィールドを並べ替えます。ウィンドウ関数の詳しい説明(クリックしてください -わかりやすい学習:SQLウィンドウ関数

ウィンドウ関数の基本的な構文は次のとおりです。

<窗口函数> over (partition by <用于分组的列名>
                order by <用于排序的列名>)

トピックの要件に従って、各訪問者とそれに対応する閲覧日付を取得し、訪問者 ID、閲覧時間をグループ化し、閲覧時間 (秒) を並べ替えます。

SQL は次のように記述します。

select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间
order by 浏览时长(秒)) as 排名
     from 淘宝日销售数据表;

検索結果:

81f1c47097b17b28d2fa988c56567402.png

ウィンドウ関数クエリは、顧客ごと、閲覧日ごとにグループ化されます. 同じ日に複数の閲覧があった場合は、いいねの数に従って並べ替えられ、フィルターのランキングは 1 であり、各訪問者とそれに対応する閲覧日は、得られる。

SQL は次のように記述します。

select 访客id ,浏览时间 ,row_number()over(partition by 访客id ,浏览时间
order by 浏览时长(秒)) as 排名
     from 淘宝日销售数据表;

検索結果:

adb9b845b8bd0f5f50c70048cd894f00.png

重複を削除するための 3 つの操作はできましたか? コメント欄に重複排除方法を追加してください〜

e3994ae973abac8c1446efcd02d19e2c.jpeg

 ⬇️「原文を読む」をクリック

 無料データ分析トレーニングキャンプに申し込む

おすすめ

転載: blog.csdn.net/zhongyangzhong/article/details/130143644