連載
» 2007年04月23日 00時00分 公開

さらっと覚えるSQL&T-SQL入門(3):関数を使ってSELECT文をパワーアップさせる (1/3)

アプリケーション開発でデータベースを利用する新人プログラマに向けて、SQLおよびT-SQLを短期間で理解できるよう、開発現場ですぐに必要となる内容を中心に解説する。(編集部)

[石橋潤一,株式会社システムインテグレータ]

主な内容

   --Page 1--
▼関数の基本
▼集計関数
   --Page 2--
▼日付関数
   --Page 3--
▼文字列関数
▼まとめ


 SQLの入門として始まった本連載、前回の「あっという間に分かるSELECT文の書き方」では「SELECT」文の基本を取り上げました。基本的なSQLの発行から、AS句や算術演算子の利用、WHERE句による条件指定などについて触れています。特にWHERE句は、SQLの中でも欠かせない存在なので、しっかりその利用法を確認しておきましょう。

 前回に続いて今回取り上げるSELECT文の応用は、「関数」です。

関数の基本

 プログラミングにおける関数とは、何らかの値を返す処理の固まりを指します。繰り返し利用するような処理をあらかじめ関数として定義しておくことによって、プログラミングに際する手間や無駄を削減できます。

 SQLにおける関数も同義です。SQLはデータを扱うという性格上、列の合計や平均、日付の計算といった処理が必ずといっていいほど求められるため、あらかじめこういった処理が関数として提供されています。

 関数は基本的に次のような形で利用します。

関数名(引数)


 カッコに囲まれた引数は、関数に対して値を渡して処理を行わせたい場合に利用します。SQLには標準規格で定められた関数、マイクロソフトやオラクルが独自に定めた関数など、かなりの数が存在しますが、今回は次の関数群を取り上げます。

  • 集計関数
  • 日付関数
  • 文字列関数

 それでは早速、集計関数から見ていきましょう。

集計関数

 集計関数は表から取り出したデータを集計する機能を持っています。合計や平均、最大値や最小値といった関数が集計関数に含まれます。集計関数には次のような関数が用意されています。

  • COUNT  行数
  • AVG    平均
  • SUM   合計
  • MAX   最大値
  • MIN    最小値

 それぞれの関数の利用法は次のような形です。

COUNT

 COUNT関数は、集計関数の中で最も利用頻度の高い関数です。SQLの結果の行数を調べられるので、例えば商品数、人数、受注件数、といった合計行数を簡単に知ることができます。

 次の例では、PRODUCTテーブルに含まれる商品数を調べています。

SELECT COUNT(*) AS 商品数 FROM Production.Product
 
商品数
-------
504

 引数として*(アスタリスク)を指定していますが、これはすべての行を集計する、ということを意味しています。COUNT関数では、引数として列名を指定できますが、その場合はNULL値(注)を持つ行を集計から除外します。

SELECT COUNT(color) AS 色のある商品数 FROM Production.Product
 
色のある商品数
-------
256

注:NULL値
NULL値とは認識できないデータ、適用できないデータ、後から追加されるデータなどを示しています。空の値あるいは0とは違いますので、注意が必要です。


AVG

 AVG関数は、指定された列の平均値を返します。NULL値は無視され、集計が行われます。

 次の例では、ListPriceが0以上の列について、ListPriceの平均値を求めています。

SELECT AVG(ListPrice) AS 平均販売単価 FROM Production.Product 
  WHERE ListPrice > 0
 
平均販売単価
-------
727.2624

SUM

 SUM関数は、指定された列の合計値を返します。NULL値は無視され、集計が行われます。

 次の例では、特定の顧客が支払った合計の金額を求めています。

SELECT SUM(TotalDue) 支払合計額 FROM Sales.SalesOrderHeader 
  WHERE CustomerID = 676
 
支払合計額
--------
559713.4499

MAX/MIN

 MAXおよびMIN関数は、指定された列の最大値、最小値を求めるための関数です。NULL値は無視され、集計が行われます。

 次の例では、特定顧客の受注履歴から、最高/最低の支払額を求めています。

SELECT MAX(TotalDue) AS 最高支払額,MIN(TotalDue) AS 最低支払額 
  FROM Sales.SalesOrderHeader WHERE CustomerID = 676
 
最高支払額    最低支払額
----------------------
97132.5077  23923.8149

 集計関数は使い慣れると非常に便利なので、その動きをしっかり確認しておきましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。