Menjelaskan Fungsi SQL

Menjelaskan cuplikan kode SQL.

Anda dapat membuat kueri model secara langsung dan menguji hasil yang tampak saat menggunakan parameter value yang berbeda dengan konsol Cloud, atau dengan memanggil Vertex AI API secara langsung.

Perintah Freeform

Jelaskan fungsi CROSS APPLY dalam kode di bawah ini:

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;

Respons

Fungsi CROSS APPLY dalam kode SQL ini bertindak sebagai subkueri berkorelasi yang menerapkan hasil subkueri ke setiap baris dalam tabel customers. Berikut perinciannya:

  1. Kueri Luar: Kueri utama memilih CustomerId dan CustomerName dari tabel customers, yang diberi alias sebagai customer.

  2. CROSS APPLY: Kata kunci ini memperkenalkan subkueri yang berkorelasi. Fungsi ini menginstruksikan database untuk mengeksekusi subkueri untuk setiap baris dalam tabel customers.

  3. Subkueri: Subkueri menghitung TotalQuantity untuk setiap pelanggan berdasarkan:

  4. Memilih jumlah quantity dari tabel orders, yang diberi alias order.

  5. Memfilter tabel orders berdasarkan CustomerId dari baris saat ini di tabel customers.

  6. Hasil: CROSS APPLY menampilkan satu baris untuk setiap pelanggan, yang berisi CustomerId, CustomerName, dan TotalQuantity yang dihitung.

Intinya, CROSS APPLY memungkinkan Anda membuat kolom baru (TotalQuantity) secara dinamis untuk setiap pelanggan berdasarkan hasil subkueri, yang secara efektif menggabungkan tabel customers dengan data pesanan gabungan.

Contoh:

Misalnya Anda memiliki data berikut:

Pelanggan:

CustomerId CustomerName
1 Joni Pratiwi
2 Julaeha Santoso

Pesanan:

OrderId CustomerId Kuantitas
1 1 5
2 1 3
3 2 2

Kueri tersebut akan mengembalikan hasil berikut:

CustomerId CustomerName TotalQuantity
1 Joni Pratiwi 8
2 Julaeha Santoso 2

Catatan:

  • CROSS APPLY mirip dengan OUTER APPLY, tetapi OUTER APPLY menampilkan baris meskipun subkueri tidak menampilkan hasil apa pun.
  • Dalam contoh khusus ini, Anda dapat mencapai hasil yang sama menggunakan JOIN dengan klausa GROUP BY. Namun, CROSS APPLY bisa lebih fleksibel dan efisien dalam skenario tertentu, terutama saat menangani subkueri yang kompleks.
Model: gemini-1.5-flash-001
Suhu: 1
Token output maks: 8192
TopK: 40
TopP: 0,95