GROUP BY
備考
SELECT ステートメント中の GROUP BY 構文に加えて、PSQL では、ベンダー文字列を含むことができる拡張された GROUP BY 構文もサポートしています。
GROUP BY クエリを行うと、見つかったグループごとに 1 行の選択リストを含む結果セットが返されます(選択リストの構文については、
SELECT を参照してください)。
GROUP BY 句でエイリアスを使用することができます。ただし、エイリアスはテーブル内のどの列名とも異なっていなければなりません。
例
次の例では、course テーブルを使用して固有の学部のリストを作成します。
SELECT Dept_Name from Course GROUP BY Dept_Name
上と同じ例でエイリアス(ここでは "dn")を使用して、同様の結果を得られます。
SELECT Dept_Name dn from Course GROUP BY dn
次の例では、結果リストに固有の学部と各学部内の講座数のリストが含まれます。
SELECT Dept_Name, COUNT(*) FROM Course GROUP BY Dept_Name
COUNT(式) によって、述部にある式の非ヌル値がすべてカウントされるということを覚えておいてください。COUNT(*) ではヌル値を含むすべての値がカウントされます。
============
セット関数により操作される行は、WHERE 検索条件が適用された後に残る行です。この例では、faculty テーブル内で Salary > 80000 の行のみがカウントされます。
SELECT COUNT(*) FROM Faculty WHERE Salary > 80000 GROUP BY Dept_Name
============
次の例では、エスケープ シーケンス内にベンダー文字列を含む、拡張 GROUP BY を示します。
SELECT(--(*vendor(Microsoft), product(ODBC) fn left(at1.col2, 1) *)--) FROM at1 GROUP BY (--(*vendor(Microsoft), product(ODBC) fn left(at1.col2, 1) *)--) ORDER BY (--(*vendor(Microsoft), product(ODBC) fn left(at1.col2, 1) *)--) DESC
関連項目