機能
集合関数指定は、値の合計、平均などの集計を行う関数です。
記述形式
参照項番
値式 → “2.11 値式”
一般規則
MAX、またはMINを指定した集合関数の結果は、引数の最大値または最小値となります。
MAX、またはMINを指定した集合関数の引数のデータ型が文字列、または各国語文字列の場合は、そのデータ型を取り扱う文字コード系(EUCコード、シフトJISコードまたはUNICODE)に基づいて表現したときの数値で比較した結果となります。
引数の値式には、列指定が1つ以上指定されていることが必要です。
集合関数の引数が外への参照である場合、値式に演算子を指定することはできません。外への参照は、“2.4 列指定”を参照してください。
AVG、MAX、MIN、またはSUMを指定した集合関数の引数となる値が空集合の場合、結果はNULLとなります。
引数の値式に、集合関数、動的パラメタ指定、順序を指定することはできません。
BLOB型は、ALLを指定したCOUNT以外の集合関数に指定することはできません。
集合関数の実行結果のデータ型は引数のデータ型により異なります。以下に集合関数の引数のデータ型と結果のデータ型を示します。引数の値式が演算子を含んでいる場合には、値式のデータ変換規則に従って変換した結果が引数のデータ型となります。値式は“2.11 値式”を参照してください。
関数 | 引数データ型 | 結果データ型 |
---|---|---|
AVG | INTEGER | DECIMAL(12,2) (注) |
SMALLINT | DECIMAL(7,2) (注) | |
DECIMAL(p,q) | DECIMAL(m,n) | |
NUMERIC(p,q) | ||
REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | |
INTERVAL | INTERVAL | |
MAX | INTEGER | INTEGER |
SMALLINT | SMALLINT | |
DECIMAL(p,q) | DECIMAL(p,q) | |
NUMERIC(p,q) | NUMERIC(p,q) | |
REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | |
CHARACTER | CHARACTER | |
VARCHAR | VARCHAR | |
NCHAR | NCHAR | |
NCHAR VARYING | NCHAR VARYING | |
DATE | DATE | |
TIME | TIME | |
TIMESTAMP | TIMESTAMP | |
INTERVAL | INTERVAL | |
MIN | INTEGER | INTEGER |
SMALLINT | SMALLINT | |
DECIMAL(p,q) | DECIMAL(p,q) | |
NUMERIC(p,q) | NUMERIC(p,q) | |
REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | |
CHARACTER | CHARACTER | |
VARCHAR | VARCHAR | |
NCHAR | NCHAR | |
NCHAR VARYING | NCHAR VARYING | |
DATE | DATE | |
TIME | TIME | |
TIMESTAMP | TIMESTAMP | |
INTERVAL | INTERVAL | |
SUM | INTEGER | INTEGER (注) |
SMALLINT | ||
DECIMAL(p,q) | DECIMAL(m,n) | |
NUMERIC(p,q) | ||
REAL | REAL | |
DOUBLE PRECISION | DOUBLE PRECISION | |
INTERVAL | INTERVAL | |
COUNT | - | INTEGER |
p: 精度
q: 位取り
- : すべてのデータ型
注) 中間精度は、INTEGERです。
使用例
表T1に対して集合関数を使用して検索した例を示します。
COUNT(*)を指定した例です。
SELECT COUNT(*) FROM T1 ↓ 結果 5
この例では、表T1の行数を求めています。関数COUNT(*)では、NULL値を含んだ行もカウントするので、この結果は5となります。
DISTINCTを指定した例です。
COUNTでは、NULL値を除き、また同じ値の列を1個にします。そのため、結果は3となります。
SUMでも、引数を同様に扱うので結果は70となります。
ALLを指定した例です。
この例では、SUMとAVGを使用しています。NULL値を除いた値に対して、それぞれの関数が適用されます。結果として、それぞれ、90、60となります。
GROUP BY句とHAVING句を併用した例です。
この例では、まずGROUP BY句によってC3の値でグループ分けして、HAVING句により行数が2以上のグループを選び出します。結果として、C3がXでありSUM結果が50の行とC3がYでありSUM結果が40の行の2行となります。