Teradata-サブクエリ

サブクエリは、別のテーブルの値に基づいて、あるテーブルのレコードを返します。これは、別のクエリ内のSELECTクエリです。内部クエリと呼ばれるSELECTクエリが最初に実行され、その結果が外部クエリによって使用されます。その顕著な特徴のいくつかは次のとおりです。

  • クエリには複数のサブクエリを含めることができ、サブクエリには別のサブクエリを含めることができます。

  • サブクエリは重複レコードを返しません。

  • サブクエリが1つの値のみを返す場合は、=演算子を使用して外部クエリで使用できます。複数の値を返す場合は、INまたはNOTINを使用できます。

構文

以下は、サブクエリの一般的な構文です。

SELECT col1, col2, col3,… 
FROM  
Outer Table 
WHERE col1 OPERATOR ( Inner SELECT Query);

次の給与表を検討してください。

従業員番号 キモい 控除 給料
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000

次のクエリは、給与が最も高い従業員番号を識別します。内部SELECTは集計関数を実行して最大NetPay値を返し、外部SELECTクエリはこの値を使用してこの値を持つ従業員レコードを返します。

SELECT EmployeeNo, NetPay 
FROM Salary 
WHERE NetPay =  
(SELECT MAX(NetPay)  
FROM Salary);

このクエリを実行すると、次の出力が生成されます。

*** Query completed. One row found. 2 columns returned. 
*** Total elapsed time was 1 second.  
 EmployeeNo     NetPay 
-----------  ----------- 
    103         83000