【Oracle】DISTINCTで重複行を除外しよう!

Oracle

前回は、テーブルのデータを削除するDELETE文について説明しました。今回は、重複行を除外するDISTINCTについて説明していきます!

データ準備

DISTINCTを試すためにテーブルを作成し、データを追加します。

-- テーブルの作成
CREATE TABLE household_account1 (
    id INT PRIMARY KEY,
    transaction_date DATE,
    expense VARCHAR2(20),
    memo VARCHAR2(80),
    deposit INT,
    withdrawal INT
);

-- データの登録
INSERT
  ALL INTO household_account1
VALUES
  (1, TO_DATE('2024-03-10', 'YYYY-MM-DD'), '給料', '3月分', 150000, 0)
INTO
  household_account1
VALUES
  (2, TO_DATE('2024-03-15', 'YYYY-MM-DD'), '食費', '昼食(スシロー)', 0, 1380) 
INTO
  household_account1
VALUES
  (3, TO_DATE('2024-03-17', 'YYYY-MM-DD'), '交通費', 'バス代', 0, 500)
INTO
   household_account1
VALUES
  (4, TO_DATE('2024-03-14', 'YYYY-MM-DD'), '食費', '夜食(とんかつ濱かつ)', 0,  2000)
INTO
   household_account1
VALUES
  (5, TO_DATE('2024-03-20', 'YYYY-MM-DD'), '通信費', 'スマホ代', 0, 3300)
INTO
   household_account1
VALUES
  (6, TO_DATE('2024-03-25', 'YYYY-MM-DD'), '交際費', 'デート', 0, 8000)
INTO
   household_account1
VALUES
  (7, TO_DATE('2024-03-21', 'YYYY-MM-DD'), '美容費', '美容室(パーマ)', 0, 10000)
INTO
   household_account1
VALUES
  (8, TO_DATE('2024-03-19', 'YYYY-MM-DD'), '交際費', '飲み会', 0, 13000)
INTO
   household_account1
VALUES
  (9, TO_DATE('2024-03-18', 'YYYY-MM-DD'), '趣味費', 'ゲーム', 0, 5000)
INTO
   household_account1
VALUES
  (10, TO_DATE('2024-03-25', 'YYYY-MM-DD'), '住居費', '3月分', 0, 55000)
SELECT
  *
FROM
  DUAL;
日付費目メモ入金額出金額
2024/03/10給料3月分1500000
2024/03/15食費昼食(スシロー)01380
2024/03/17交通費バス代0500
2024/03/14食費夜食(とんかつ濱かつ)02000
2024/03/20通信費スマホ代03300
2024/03/25交際費デート08000
2024/03/21美容費美容室(パーマ)010000
2024/03/19交際費飲み会013000
2024/03/18趣味費ゲーム05000
2024/03/25住居費3月分055000
家計簿テーブル

DISTICTの使い方

重複行を除外するDISTINCTは下記のように記述します。

SELECT DISTINCT 列名…
   FROM テーブル名

例えば費目が何種類あるのか調べてみます。

SELECT DISTINCT expense AS "費目"  FROM household_account1
費目
給料
通信費
交際費
美容費
食費
交通費
趣味費
住居費
費目 8種類

次は重複がない入金額を取得してみます。

SELECT DISTINCT deposit AS "入金額"  FROM household_account1
入金額
150000
0
重複行を除外したデータは2レコード

まとめ

重複行を除外してデータを取得する場合は、DISTINCTを使うということを覚えておきましょう。また、ほかの修飾キーワードと異なり、SELECT文の最初に記述する必要があるので注意してください!

コメント