SQL
重複データを取得するSQL
7:32
こんにちは ともです。
今回は誤って登録された重複データの取得方法について記載します。本来であれば重複しないテーブル構造を作る必要があります。しかし、シーケンスを使ってテーブル構成上値の重複を許しているケースもあると思われます。調査で重複したデータを調べる際にご利用ください。
重複データの構造
以下のようにシーケンスとユーザ名とカテゴリと点数を持っているユーザを例に説明します。
テーブル名はユーザテーブルとします。
シーケンスID(主キー) | ユーザー名 | カテゴリ | 点数 |
---|---|---|---|
1 | 山田太郎 | 文系 | 80 |
2 | 山田太郎 | 文系 | 80 |
3 | 山田太郎 | 文系 | 80 |
4 | 山田太郎 | 理系 | 60 |
5 | 山田太郎 | 理系 | 60 |
6 | 山田次郎 | 文系 | 70 |
7 | 山田次郎 | 理系 | 80 |
このデータからユーザとカテゴリ毎の重複データが何件あるか算出します。
ユーザー名 | 理系 | 件数 |
---|---|---|
山田太郎 | 文系 | 3 |
山田太郎 | 理系 | 2 |
SQLは以下の通りです。グループ化を使ってデータを取得します。
SELECT
重複データ.ユーザー名
, 重複データ.カテゴリ
, カテゴリ.件数
FROM
(
SELECT
ユーザー名
, カテゴリ
, COUNT(ユーザー名) AS 件数
FROM ユーザテーブル
GROUP BY
ユーザー名
, カテゴリ
) 重複データ
WHERE 重複データ.件数 >= 2
GROUP BYを使ってユーザとカテゴリ毎の件数を取得します。そのあと件数が2件以上のデータを条件に加えることで重複データと件数を取得することが出来ます。
0 件のコメント:
コメントを投稿
コメントをお待ちしています。