GROUP BY節使用時に利用できる関数を紹介します。
平均値を返します。
SELECT name, AVG(age) FROM person GROUP BY name;
ビット演算によるAND(OR,XOR)を返します。
SELECT name, BIT_AND(flag) FROM person GROUP BY name;
グループ化されたレコードの件数を返します。
SELECT COUNT(*) FROM person; SELECT COUNT(phone) FROM person;
前者はpersonテーブルに存在する全レコード件数、
後者はそのうちphoneカラムが非NULLの全レコード件数を返します。
グループ化されたレコードのうち、同一カラムの重複を除いた件数を返します。
SELECT COUNT(DISTINCT country, city) FROM person;
上の例では、countryとcityが重複しないpersonの数を返します。
どちらかのカラムがNULLのレコードはカウントされません。
バージョン4.1以降。
詳細は不明です。
最大(最小)値を返します。
SELECT MIN(age) FROM person;
標準偏差値を返します。
SELECT STD(score) FROM person;
合計値を返します。
SELECT SUM(score) FROM person;
バージョン4.1以降。
標準偏差値(STDの2乗)を返します。
SELECT VARIANCE(score) FROM person;
バージョン4.1.1以降。
詳細は不明です。
標準SQLではGROUP BY句に無いnameカラムを
SELECT式に利用することは出来ません。
MySQLではこの構文を拡張しています。
SELECT name, MAX(score) FROM table_a GROUP BY score;
上の例の場合、scoreが最大であるレコードのnameを取得することが出来ます。