初詣合格祈願SQL講座

SQL講座 SELECT6

目指せ!SQL

初詣合格祈願SQL講座 SELECT6

重複したデータを取り除く(DISTINCT)

指定した列やWHERE句の指定によって抽出結果が重複することがあります。例えば、学籍表に対して次ぎのようなSELECT文を実行します。

実行結果
学籍番号氏名性別年齢本籍学科
94012上原 二郎19福岡県情報
94015江崎 優香20福岡県情報
94021大和 三郎21山口県公務員
94001浅田 一郎21兵庫県情報
94003石田 美穂22大阪府公務員

SELECT 学科
FROM 学籍表

実行結果
学科
情報
公務員
情報
情報
公務員

となり、重複した行が発生します。重複した行を表示したくないときは、SELECTのあとにDISTINCTを指定することで重複した行が除去できます。

SELECT DISTINCT 学科
FROM 学籍表

とすると、実行結果は次のようになります。

学科
情報
公務員

列の別名指定

<列に別の名前をつける>
SELECT文は、列に別な名前を付けることができます。通常は、SELECT句で指定された列名でかまいませんが、計算式やグループ関数などを使ったときなどは、列に別な名前を付けることでSELECT文の実行結果がわかりやすくなることがあります。ここでは列に別な名前を付ける方法を解説します。

<列に別の名前をつけるということは?>

列の別名指定の記述形式 SELECT 列名 AS 列の別名
SELECT文では、SELECT句で指定した列の名前が実行結果の列名になります。次のSELECT文は、年齢が20歳より大きい人の氏名、性別、年齢を学籍表より抽出するSELECT文です。実行結果を見ると、実行結果の列名はSELECT句で指定した列の名前が列名になっていることが分かります。
SELECT文
例えば、氏名の列を名前という列名で別名表示をさせたいときは、SELECT文を次のように記述します。 SELECT文

<計算式やグループ関数で指定した列を別名表示する>
別名表示は、計算式やグループ関数を使ったときによく用いられます。計算式やグループ関数を指定した列では、データベース・ソフトが自動的につけた名前が列名になるか、数式や関数名が列名となるからです。いずれになるかは使用するデータベース・ソフトによって決まります。次のSELECT文は、日付が“2003/1/3”の商品名、単価、数量、単価×数量を売上表より抽出するSELECT文です。実行結果の計算式の列に注目してください。
SELECT文
単価×数量は、売上金額のことです。しかし、Accessの実行結果または、Accessではないデータベース・ソフトにおける実行結果いずれの場合も“売上金額”とは表示されません。売上金額と表示されると、SELECT文の実行結果がわかりやすくなります。列の別名指定をおこなえば“売上金額”と表示させることができます。  次の例題は前述したSELECT文において、抽出条件などは同じで単価×数量の列を売上金額と表示させるようにしたものです。

<例題>
日付が“2003/1/3”の商品名、単価、数量、単価×数量を売上表より抽出します。ただし、単価×数量の列は“売上金額”と表示します。
SELECT文

SUMやAVGなどのグループ関数を使ったときでも列の別名指定が可能です。
<例題>
売上表より商品ごとの数量の合計を表示させます。ただし、数量の合計は“合計数量”と表示します。
SELECT文



初詣合格祈願SQL講座ページTOPに戻る