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