Oracle サブクエリ HAVING

Oracle において サブクエリ を示す。

サブクエリ

1.HAVING句のサブクエリ

  SELECT 顧客コード,
         COUNT(DISTINCT 受注番号)
  FROM 受注表
  GROUP BY 顧客コード
  HAVING 受注個数 < (SELECT MIN(受注個数) FROM 受注表
                                          WHERE 顧客コード = '002');

2.SELECT のすぐ後ろに続けて使用することもできる

  SELECT 顧客コード,
         AVG(受注個数),  //顧客コード別の受注個数の平均
         (SELECT AVG(受注個数) FROM 受注表)  //全体の受注個数の平均
  FROM 受注表
  GROUP BY 顧客コード;

3.FROM 句の後に続けて使用することもできる

  サブクエリの結果セットを一つのテーブルとして、利用するものです。
  受注表における各顧客の受注個数の平均の中で、最も大きい値を出力するものです
  SELECT MAX(AVG_J) AS MAX_AVG
  FROM (SELECT AVG(受注個数) AS AVG_J
        FROM 受注表 GROUP BY 顧客コード);

4.相関サブクエリ

  内部クエリから外部クエリのFROM句のテーブルを参照する。
  この場合、メインクエリのテーブルの行ごとに、サブクエリが繰り返し実行されます。

  テーブルA
  101
  102
  103

  テーブルB
  101  abc
  102  def
  103  ghi

  101-101    102-101    103-101
     -102       -102       -102
     -103       -103       -103

5.相関サブクエリ(HAVING句)

  SELECT SUM(受注個数),
         納品日
  FROM 受注表 PP
  GROUP BY 納品日
  HAVING SUM(受注個数) > (SELECT 150 + MAX(受注個数)
                          FROM 受注表 QQ
                          WHERE PP.納品日 = QQ.納品日);

ご訪問頂き有難う御座います。 当サイトを効率良く使うためにまずは FrontPage を見て下さい。 検索方法、一覧表示などの各情報を纏めています。
当サイトの説明 → Frontpage