0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

様々なSQL構文まとめ【DISTINCT,UNION,四則演算】

Posted at

特定のユニークな値の抽出

例えばこのようなデータがあったとします。

商品名	数量
テレビ	10
テレビ	10
洗濯機	7

このデータはテレビの行が二つあることが分かります。
データを抽出する中で、重複を無くして表示させたい場面があったとします。その場合、
DISTINCT句を使うことによってuniqueな値(重複がない)を抽出できます。
それでは下記のデータでコードを書いていきます。
1559566590613777.png

SELECT DISTINCT `部署` FROM `従業員リスト`

('部署',)
[('営業一課',), ('営業二課',), ('開発一課',), ('開発二課',)]

無事にユニークな値を抽出できました。

複数の検索結果を結合させる

このようなデータがあったとします。
1559568899101299.png
1559568922939635.png

それぞれのデータにはある大学への志望者リストがあります。
AとBの大学の志願者を一緒に抽出させたい場合は、UNION句を用います。

では、実際にコードを書いていきます。

SELECT `名前` FROM `A大学志望者` UNION SELECT `名前` FROM `B大学志望者`
('名前',)
[('鈴木太郎',), ('愛出美二郎',), ('八木沢晃',), ('山田太郎',), ('千駄木千代',)]

UNIONの左右にそれぞれコードが記載されています。
それぞれの検索結果が、一つにまとまって表示されます。この場合、データに重複があった場合、DISTINCTのように重複が削除されます。
重複をなくしたい場合は、UNION ALLとすることで、重複をなくすことができます。

四則演算

今度はこのようなデータを活用していきます。
1550764633217337.png

SQLでは、四則演算を行うことも簡単にできます。
例えばこのようなコードを書いていきます

SELECT `名前`, `国語` - (`国語` + `数学` + `英語` )/3 AS `差分` FROM `成績`

これは、なにを表示しているかというと
「~さんの3教科の平均と国語の成績がどれくらい差があるか」を見ています。
ASを用いて、出力される名前を自由にすることが出来ます。

このように、カラムを選択させることで四則演算をさせることが出来ます。
出力結果は下記の通りとなります。

('名前', '差分')
[('太郎', Decimal('14.6667')), ('二郎', Decimal('10.0000')), ('三郎', Decimal('-29.3333'))]
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?