SQL Tips

 

[SQL Server] DISTINCT - 重複行を除外してデータの取得方法

MS-SQL / SQL Server
DISTINCT - 重複行を除外してデータの取得方法

DISTINCT句は重複したデータを場外することができます。

では、テストしてみましょう。
下記のSQLを実行してテスト用のテーブルとデータを作成します。

CREATE TABLE dbo.TempData
(
Sn int
)

INSERT INTO dbo.TempData (Sn) VALUES (1)
INSERT INTO dbo.TempData (Sn) VALUES (1)
INSERT INTO dbo.TempData (Sn) VALUES (1)
INSERT INTO dbo.TempData (Sn) VALUES (2)
INSERT INTO dbo.TempData (Sn) VALUES (3)
INSERT INTO dbo.TempData (Sn) VALUES (3)
INSERT INTO dbo.TempData (Sn) VALUES (4)
INSERT INTO dbo.TempData (Sn) VALUES (5)
INSERT INTO dbo.TempData (Sn) VALUES (5)
INSERT INTO dbo.TempData (Sn) VALUES (5)

データには1~5までの数字を重複するデータを含めて10件のデータを登録しました。

普通にテーブルをSELECTすると下記のような結果が出ます。

SELECT Sn FROM dbo.TempData

実行結果

Sn
-----------
1
1
1
2
3
3
4
5
5
5

ですが、重複するデータを場外して表示したい場合は下記のようにDISTINCTを使います。

SELECT DISTINCT Sn FROM dbo.TempData

実行結果

Sn
-----------
1
2
3
4
5


登録されている10件のデータの内5件のデータが取得されました。

DISTINCTを使わなくても同じ結果を得る方法があります。

それが「GROUP BY」です。

SELECT Sn FROM dbo.TempData GROUP BY Sn

上記のように「Sn」を「GROUP BY」すると「DISTINCT」と同じ結果を得ることができます。

実行結果

Sn
-----------
1
2
3
4
5


では、重複行を除外したデータの行数をカウントした場合!!!

その時は下記のように作成します。

SELECT COUNT(DISTINCT Sn) FROM dbo.TempData

実行結果

-----------
5

簡単でしょう?

もしくは下記のようにも作成できます。

SELECT COUNT(Sn) 
FROM 
(
SELECT DISTINCT Sn FROM dbo.TempData
) A

また、「GROUP BY」してから行数をカウントする方法もあります。

SELECT COUNT(Sn) 
FROM 
(
SELECT Sn FROM dbo.TempData GROUP BY Sn
) A

全部同じ結果が得られます。

簡単ですし、頻繁に使う部分ですので、覚えておくとイイですよ。
このエントリーをはてなブックマークに追加
2014-10-03 14:55:04   2870

コメント

[SQL Server] 順位付け関数「RANK」、「DENSE_RANK」について

-.日付:2014-10-15   カテゴリ : -   閲覧数:2155

[SQL Server] DISTINCT - 重複行を除外してデータの取得方法

-.日付:2014-10-03   カテゴリ : -   閲覧数:2870

[SQL Server] DATETIME データ型のミリ秒に関する注意事項

-.日付:2014-10-01   カテゴリ : -   閲覧数:3020

[SQL Server] RAND(ランダム)関数で乱数を取得する方法

-.日付:2014-09-24   カテゴリ : -   閲覧数:11389

[SQL Server] 順位付け関数「ROW_NUMBER」について

-.日付:2014-09-17   カテゴリ : -   閲覧数:2533

[SQL Server] LIKEで「_」、「%」が入った文字を検索する方法

-.日付:2014-09-17   カテゴリ : -   閲覧数:3840

[SQL Server] SQL Server CPU 使用率が高いクエリを検索する方法

-.日付:2014-09-12   カテゴリ : -   閲覧数:6886

[SQL Server] 既存のテーブルにPrimary Key(PK)を設定する方法

-.日付:2014-08-20   カテゴリ : -   閲覧数:2014

[SQL Server] テーブルの一覧を取得する方法 - Table List

-.日付:2014-08-14   カテゴリ : -   閲覧数:2228

Copyright © 2015 INNOYA.COM All rights reserved. RSS