転送する要約レコードの指定

特定の条件に合致した要約情報だけを転送する場合があります。HAVING を使用して、どの要約レコードを転送するかを選択することができます。WHERE が、グループの特定のレコードに適用されるのに対して、HAVING は要約レコードだけに適用されます。

次の例では、各部品の最高価格と最低価格が転送されます。ただし、最高価格が 10.00 を超える要約レコードだけが転送されます。
ライブラリー/ファイル (メンバー) SUPPLIERS
GROUP BY PARTNO
SELECT PARTNO, MAX(PRICE), MIN(PRICE)
HAVING MAX(PRICE) > 10.00
HAVING を使用して不要な要約レコードを除去した後の最終結果は、次のようになります。
     Field: PARTNO   MAX(PRICE)   MIN(PRICE)
            ------   ----------   ----------
  Record 1:    209        19.50        18.00
         2:    285        21.00        21.00
         3:    207        29.00        29.00

ファイル全体についての 1 つの要約レコードを転送することもできます。これを行うには、SELECT に要約の関数だけを指定し、 GROUP BY には何も指定しません。これにより、ファイル全体が 1 つのグループと見なされ、そのグループについて 1 つの要約レコードが転送されます。

グループを要約する概念と、複数のファイルからレコードを結合する概念を 一緒に使用することもできます。所要の結果を得るためには、次の手順に従ってください。
  1. 「転送元」にファイルを指定し、そのレコードを結合するための結合条件を JOIN BY に指定する。
  2. WHERE に不要なレコードを除去する条件を指定する。
  3. GROUP BY に残ったレコードをグループ化するためのフィールドを指定する。
  4. SELECT に関数を指定して、要約レコードを作成する。
  5. HAVING に不要なレコードを除去するための条件を指定する。
  6. ORDER BY に最終的な要約レコードをグループ化するための項目を指定する。