0371.Blog

SQLのお勉強 6.distinct

2020-09-14

こんにちは、0371です。

今回は、SQLのお勉強をしたいと思います。
基本情報技術者試験で出題される範囲を中心に進めます。

お勉強

※ PostgreSQLはインストール済みかつ、パスも通しているという前提で進めていきます。

分からないという方は、以下の記事から始めてください。

dockerを使って、再構築が容易なSQLの練習場を作成する
"https://0371.blog/docker-sql"

前回の記事はこちら

SQLのお勉強 5.select "https://0371.blog/sql-5"

重複行を除く distinct

前回使用したselect文と、distinctを合わせることで、重複行がないような結果を取得することができます。
distinctは、ディスティンクト と読みます。

select distinct 列名 from テーブル名;

例えば、shohin_bunruiを重複なしで取り出したいという場合は以下のようになります。

select distinct shohin_bunrui from Shohin;

結果はこうなります。

 shohin_bunrui 
---------------
 キッチン用品
 衣服
 事務用品
(3 rows)

distinctは、nullも含めます。

select distinct shiire_tanka from Shohin;
 shiire_tanka 
--------------
             
          320
          500
         2800
         5000
          790
(6 rows)

distinctは、複数の列の前にも置くことができます。
ただし、distinctは先頭の列名の前でしか書くことができません。

distinct指定前

select shohin_bunrui, torokubi from Shohin;
 shohin_bunrui |  torokubi  
---------------+------------
 衣服          | 2009-09-20
 事務用品      | 2009-09-11
 衣服          | 
 キッチン用品  | 2009-09-20
 キッチン用品  | 2009-01-15
 キッチン用品  | 2009-09-20
 キッチン用品  | 2008-04-28
 事務用品      | 2009-11-11
(8 rows)

「キッチン用品 | 2009-09-20」の行が二つあります。

distinct指定後

select distinct shohin_bunrui, torokubi from Shohin;
 shohin_bunrui |  torokubi  
---------------+------------
 衣服          | 
 キッチン用品  | 2009-01-15
 衣服          | 2009-09-20
 キッチン用品  | 2008-04-28
 事務用品      | 2009-11-11
 事務用品      | 2009-09-11
 キッチン用品  | 2009-09-20
(7 rows)

「キッチン用品 | 2009-09-20」の行が重複していたので、一つになっています。

今日はここまで。

参考書籍

SQL 第2版 ゼロからはじめるデータベース操作
"https://amzn.to/2QYMBJD"

今日の一言

distinctができたのでSQLはマスターしたも同然!!!!

SQLのお勉強 7.where
"https://0371.blog/sql-7"