特定のユニークな値の抽出
例えばこのようなデータがあったとします。
商品名 数量
テレビ 10
テレビ 10
洗濯機 7
このデータはテレビの行が二つあることが分かります。
データを抽出する中で、重複を無くして表示させたい場面があったとします。その場合、
DISTINCT句
を使うことによってuniqueな値(重複がない)を抽出できます。
それでは下記のデータでコードを書いていきます。
SELECT DISTINCT `部署` FROM `従業員リスト`
('部署',)
[('営業一課',), ('営業二課',), ('開発一課',), ('開発二課',)]
無事にユニークな値を抽出できました。
複数の検索結果を結合させる
それぞれのデータにはある大学への志望者リストがあります。
AとBの大学の志願者を一緒に抽出させたい場合は、UNION句
を用います。
では、実際にコードを書いていきます。
SELECT `名前` FROM `A大学志望者` UNION SELECT `名前` FROM `B大学志望者`
('名前',)
[('鈴木太郎',), ('愛出美二郎',), ('八木沢晃',), ('山田太郎',), ('千駄木千代',)]
UNION
の左右にそれぞれコードが記載されています。
それぞれの検索結果が、一つにまとまって表示されます。この場合、データに重複があった場合、DISTINCT
のように重複が削除されます。
重複をなくしたい場合は、UNION ALL
とすることで、重複をなくすことができます。
四則演算
SQLでは、四則演算を行うことも簡単にできます。
例えばこのようなコードを書いていきます
SELECT `名前`, `国語` - (`国語` + `数学` + `英語` )/3 AS `差分` FROM `成績`
これは、なにを表示しているかというと
「~さんの3教科の平均と国語の成績がどれくらい差があるか」を見ています。
ASを用いて、出力される名前を自由にすることが出来ます。
このように、カラムを選択させることで四則演算をさせることが出来ます。
出力結果は下記の通りとなります。
('名前', '差分')
[('太郎', Decimal('14.6667')), ('二郎', Decimal('10.0000')), ('三郎', Decimal('-29.3333'))]