# GROUP BY 節

GROUP BY 節は選択式の一部とすることができます。この節により結果を一列以上の列の間で同じ値を持つ、結果の部分集合にまとめることができます。 それぞれの部分集合には、分類列が同じ値を持つ行はありません。 NULLは部分集合へのまとめを行う場合、同じ値と見なされます。

典型的にいって、GROUP BY節は集約式と併せて使われます。

#### 構文

    GROUP BY 列名 [ , 列名 ] *

列名 は問い合わせにて可視でなければなりません。問い合わせにて不可視な列であってはなりません。 例えば、GROUP BY節が副問い合わせにあった場合、その節は副問い合わせの外にある問い合わせの列を参照してはなりません。

GROUP BY節を持つ選択式にある選択項目は集約か分類列でなければなりません。

    -- airportで分類されたflightsの、
    -- flying_timesの平均を探す。
    SELECT AVG (flying_time), orig_airport
    FROM Flights
    GROUP BY orig_airport

    SELECT MAX(city_name), region
    FROM Cities, Countries
    WHERE Cities.country_ISO_code = Countries.country_ISO_code
    GROUP BY region
    -- smallintによる分類
    SELECT ID, AVG(SALARY)
    FROM SAMP.STAFF
    GROUP BY ID
    -- AVGSALARY、EMPCOUNT列と、DEPTNO列をAS節により取得する。
    -- さらにOTHERSという相関名で、WORKDEPT列による分類を行う。
    SELECT OTHERS.WORKDEPT AS DEPTNO,
    AVG(OTHERS.SALARY) AS AVGSALARY,
    COUNT(*) AS EMPCOUNT
    FROM SAMP.EMPLOYEE OTHERS
    GROUP BY OTHERS.WORKDEPT

Parent topic: SQL 節