| 名前 | 説明 | 
|---|---|
AVG() | 
引数の平均値を返します | 
BIT_AND() | 
ビット単位の論理積を返します | 
BIT_OR() | 
ビット単位の論理和を返します | 
BIT_XOR()(v4.1.1) | 
ビット単位の排他的論理和を返します | 
COUNT(DISTINCT) | 
異なる値のカウント数を返します | 
COUNT() | 
返された行のカウント数を返します | 
GROUP_CONCAT()(v4.1) | 
連結した文字列を返します | 
MAX() | 
最大値を返します | 
MIN() | 
最小値を返します | 
STD() | 
母標準偏差を返します | 
STDDEV_POP()(v5.0.3) | 
母標準偏差を返します | 
STDDEV_SAMP()(v5.0.3) | 
標本標準偏差を返します | 
STDDEV() | 
母標準偏差を返します | 
SUM() | 
合計を返します | 
VAR_POP()(v5.0.3) | 
母標準分散を返します | 
VAR_SAMP()(v5.0.3) | 
標本分散を返します | 
VARIANCE()(v4.1) | 
母標準分散を返します | 
        この節では、値のセットを演算するグループ
        (集約)
        関数について説明します。特別に説明されていないかぎり、グループ関数は
        NULL 値を無視します。
      
        GROUP BY
        節を含まないステートメントでグループ関数を使用する場合、すべての行をグループ分けするのと同様の効果になります。詳細は
        項7.12.3. 「非常時カラムとの GROUP BY
        および HAVING」
        をご覧ください。
      
        数値引数では、分散値と標準偏差関数が
        DOUBLE
        値を返します。SUM()
        および AVG()
        関数は、高精度値引数 (整数または
        DECIMAL)
        に対して
        DECIMAL
        値を返し、近似値引数
        (FLOAT または
        DOUBLE)
        に対して
        DOUBLE
        値を返します。
      
        SUM() および
        AVG()
        集約関数は、時間値とはうまく作動しません。(これらは値を数字に変換するので、最初の非数字キャラクタの後の情報がすべて失われてしまう)
        この問題を回避するには、数値ユニットを変換し、集約演算を行い、時間値に変換し直すという方法があります。例:
      
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROMtbl_name; SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROMtbl_name;
        数値引数を取る
        SUM() や
        AVG()
        などの関数は、必要に応じて引数を数値にキャストします。SET
        や ENUM
        値の場合、このキャスト演算によってその背後の数値が使用されます。
      
            
            の平均値を返します。exprexpr
            の固有値の平均を返すのに、DISTINCT
            オプションを使用することができます。
          
            一致する行がない場合、AVG()
            は NULL
            を返します。
          
mysql>SELECT student_name, AVG(test_score)->FROM student->GROUP BY student_name;
            expr
            内のすべてのビットの、ビット単位の
            AND
            を返します。計算は 64 ビット
            (BIGINT)
            の精度で行われます。
          
            この関数は、一致する行がない場合は、18446744073709551615
            を返します。(これは、すべてのビットが 1
            に設定された、符号なしの
            BIGINT
            値の値です)。
          
            expr
            内のすべてのビットの、ビット単位の
            OR
            を返します。計算は 64 ビット
            (BIGINT)
            の精度で行われます。
          
            この関数は、一致する行がない場合は、0
            を返します。
          
            expr
            内のすべてのビットの、ビット単位の
            XOR
            を返します。計算は 64 ビット
            (BIGINT)
            の精度で行われます。
          
            この関数は、一致する行がない場合は、0
            を返します。
          
            SELECT
            ステートメントによって引き出された行に含まれる、expr
            の非 NULL
            値の数を返します。結果は
            BIGINT
            値になります。
          
            一致する行がない場合、COUNT()
            は 0 を返します。
          
mysql>SELECT student.student_name,COUNT(*)->FROM student,course->WHERE student.student_id=course.student_id->GROUP BY student_name;
            COUNT(*)
            は、NULL
            値を含む含まざるに関わらず、引き出された行の数を返すという点でやや異なります。
          
            COUNT(*)
            は、SELECT
            がひとつのテーブルから検索し、ほかのカラムは引き出されず、また
            WHERE
            カラムがない場合、きわめて素早く戻すよう最適化されています。例
            :
          
mysql> SELECT COUNT(*) FROM student; 
            この最適化は、正確な行の数がこの保存エンジンに保管されており、素早いアクセスが可能なため、MyISAM
            テーブルにのみ適用します。InnoDB
            をはじめとするトランザクション保存エンジンに関しては、正確な行の数を保存するのは、複数のトランザクションが起こって、それぞれが行の係数に影響をおよぼす場合があるため、より困難になります。
          
            
            
            COUNT(DISTINCT
            
          expr,[expr...])
            異なる非 NULL
            値の数を返します。
          
            一致する行がない場合、COUNT(DISTINCT)
            は 0 を返します。
          
mysql> SELECT COUNT(DISTINCT results) FROM student; 
            MySQL
            では、式のリストを提供することにより、NULL
            を含まない、異なる式のコンビネーションの数を得ることができます。標準
            SQL
            では、COUNT(DISTINCT
            ...)
            内で、すべての式の連結を行わなければなりません。
          
            この関数は、グループからの連結された非
            NULL
            値を伴う文字列結果を返します。非
            NULL
            値がない場合は
            NULL
            を返します。全構文は次の通りです :
          
GROUP_CONCAT([DISTINCT]expr[,expr...] [ORDER BY {unsigned_integer|col_name|expr} [ASC | DESC] [,col_name...]] [SEPARATORstr_val])
mysql>SELECT student_name,->GROUP_CONCAT(test_score)->FROM student->GROUP BY student_name;
または
mysql>SELECT student_name,->GROUP_CONCAT(DISTINCT test_score->ORDER BY test_score DESC SEPARATOR ' ')->FROM student->GROUP BY student_name;
            MySQL
            では、式のコンビネーションの連結された値を得ることができます。DISTINCT
            を使用することで、重複した値を除くことが可能です。結果の値をソートしたい場合は、ORDER
            BY
            節を使用してください。逆順でソートするには、DESC
            (降順) キーワードを、ORDER
            BY
            節のソートするカラムの名前に加えてください。デフォルトでは昇順になっています。これは、ASC
            を使うことで明示的に指定することができます。SEPARATOR
            の後には、結果の値の間に挿入されるべき文字列値が続きます。デフォルトはコンマ
            (「,」)
            です。SEPARATOR ''
            を使用すると、セパレータを一挙に取り除くことができます。
          
            結果は
            group_concat_max_len
            システム変数に指定された最大長までに切り詰められますが、そのデフォルト値は
            1024
            です。この値を大きくしてもかまいませんが、戻り値の実際の最大長は、max_allowed_packet
            の値によって制約されます。実行時に
            group_concat_max_len
            の値を変更するための構文は、次のとおりです。ただし、val
            は符号なしの整数です。
          
SET [GLOBAL | SESSION] group_concat_max_len
= val; 
            CONCAT()
            および
            CONCAT_WS()
            も併せてご覧ください :
            項7.4. 「文字列関数」.
          
            expr
            の最大値を返します。MAX()
            は文字列引数を取ることができますが、そのような場合は最大文字列値を返します。項4.4.4. 「MySQL におけるインデックスの使用」
            を参照してください。DISTINCT
            キーワードで expr
            の固有の値の最大を検出できますが、その場合、DISTINCT
            を省略した場合と同じ結果を生成します。
          
            一致する行がない場合、MAX()
            は NULL
            を返します。
          
mysql>SELECT student_name, MIN(test_score), MAX(test_score)->FROM student->GROUP BY student_name;
            MAX()
            に関しては、MySQL
            は現在、ENUM
            と SET
            カラムを、セット内でのそれらの文字列の相対位置によってではなく、文字列値によって比較しています。これは、ORDER
            BY
            がそれらをどう比較するかによって異なります。この点は、将来の
            MySQL リリースに反映される予定です。
          
            expr
            の最小値を返します。MIN()
            は文字列引数を取ることができますが、そのような場合は最小文字列値を返します。項4.4.4. 「MySQL におけるインデックスの使用」
            を参照してください。DISTINCT
            キーワードで expr
            の固有の値の最小を検出できますが、その場合、DISTINCT
            を省略した場合と同じ結果を生成します。
          
            一致する行がない場合、MIN()
            は NULL
            を返します。
          
mysql>SELECT student_name, MIN(test_score), MAX(test_score)->FROM student->GROUP BY student_name;
            MIN()
            に関しては、MySQL
            は現在、ENUM
            と SET
            カラムを、セット内でのそれらの文字列の相対位置によってではなく、文字列値によって比較しています。これは、ORDER
            BY
            がそれらをどう比較するかによって異なります。この点は、将来の
            MySQL リリースに反映される予定です。
          
            expr
            の母標準偏差を返します。これは標準 SQL
            へのエクステンションです。標準 SQL 関数
            STDDEV_POP()
            を代わりに使用することも可能です。
          
            この関数は、一致する行がない場合は、NULL
            を返します。
          
            expr
            の母標準偏差を返します。この関数は、Oracle
            との互換性を確保するために提供されています。標準
            SQL 関数
            STDDEV_POP()
            を代わりに使用することも可能です。
          
            この関数は、一致する行がない場合は、NULL
            を返します。
          
            expr の母標準偏差
            (VAR_POP()
            の平方根)
            を返します。STD()
            または
            STDDEV()
            を使用することもできます。これらは同等ですが標準
            SQL ではありません。
          
            一致する行がない場合、STDDEV_POP()
            は NULL
            を返します。
          
            expr の標本標準偏差
            (VAR_SAMP()
            の平方根) を返します。
          
            一致する行がない場合、STDDEV_SAMP()
            は NULL
            を返します。
          
            expr
            の集計を返します。返しセットが行を持たない場合、SUM()
            は NULL
            を返します。MySQL 5.1 で
            DISTINCT
            を使用して、expr
            の重複しない値のみを集計することができます。
          
            一致する行がない場合、SUM()
            は NULL
            を返します。
          
            expr
            の母標準分散を返します。行をサンプルではなく全母集団としてとらえ、行の数を分母として得ます。また、VARIANCE()
            を使用することもできます。これは同等ですが標準
            SQL ではありません。
          
            一致する行がない場合、VAR_POP()
            は NULL
            を返します。
          
            expr
            の標本分散を返します。この分母は行の数から
            1 をひいたものです。
          
            一致する行がない場合、VAR_SAMP()
            は NULL
            を返します。
          
            expr
            の母標準分散を返します。これは標準 SQL
            へのエクステンションです。標準 SQL 関数
            VAR_POP()
            を代わりに使用することも可能です。
          
            一致する行がない場合、VARIANCE()
            は NULL
            を返します。
          
