SQL 関数を説明する

SQL コード スニペットについて説明します。

直接モデルにクエリを実行して、返された結果をテストできます。その場合、Cloud コンソールでさまざまなパラメータ値を使用することも、Vertex AI API を直接呼び出すこともできます。

自由形式のプロンプト

以下のコードの CROSS APPLY の機能を説明してください。

SELECT customer.CustomerId, customer.CustomerName, ord.*
FROM customers customer
CROSS APPLY
(
    SELECT SUM(order.quantity) as TotalQuantity
    FROM orders order
    WHERE order.CustomerId = customer.CustomerId
) ord;

レスポンス

CROSS APPLY の説明:

提供された SQL コードでは、CROSS APPLY を使用して、customers テーブルと、各顧客の注文の合計数量を計算するサブクエリとの間でラテラル結合を実行します。順を追って説明しましょう。

  1. 外部結合のテーブル(customers: クエリは、customers テーブルから選択することから始まります。このテーブルには、各顧客に関する情報(CustomerId、CustomerName)が含まれているはずです。
  2. CROSS APPLY: この句は、サブクエリとのラテラル結合を導入します。customers テーブルの各行に対して、サブクエリが実行されます。
  3. サブクエリ: サブクエリは、特定の顧客の注文の TotalQuantity を計算します。これは次の方法で実現しています。
  4. orders テーブルから SUM(order.quantity) を選択します。
  5. 条件 order.CustomerId = customer.CustomerId に基づいて注文をフィルタします。これにより、外部結合のテーブルの現在の顧客に属する注文のみが合計に含まれます。
  6. 相関: ここで重要なのは、外部結合のテーブルとサブクエリの間の関係です。外部結合クエリの customer.CustomerId は、サブクエリの WHERE 句内で参照されるため、サブクエリは各顧客に固有の TotalQuantity を動的に調整して計算できます。
  7. 結果: 最終的な結果セットには、customers テーブルの列(CustomerId、CustomerName)と、サブクエリで計算された TotalQuantityord というエイリアス)が含まれ、各顧客とその合計注文数の包括的なビューが提供されます。

CROSS APPLY を使用する理由

このシナリオでは、CROSS APPLY が適しています。理由は次のとおりです。

  • 顧客ごとに個別に計算(注文数の合計)を行う必要があります。
  • サブクエリの計算は、外部結合の customers テーブルの特定の CustomerId によって異なります。
  • CROSS APPLY を使用すると、顧客行ごとにサブクエリが評価され、必要な情報が組み込まれた結果セットが生成されます。

代替案: 相関サブクエリ

CROSS APPLY は明確さと効率性のためによく使用されますが、SELECT 句内で相関サブクエリを使用しても同様の結果が得られます。

SELECT customer.CustomerId, customer.CustomerName,
(
SELECT SUM(order.quantity)
FROM orders order
WHERE order.CustomerId = customer.CustomerId
) as TotalQuantity
FROM customers customer;

ただし、特に複数の計算や複雑なサブクエリを扱う場合、CROSS APPLY のほうが読みやすく効率的です。

モデル: gemini-1.5-pro-preview-0409
Temperature: 1
最大出力トークン: 8192
TopK: 40
トップ P 0.95