FIRST_VALUE (Transact-SQL)
Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Titik akhir analitik Azure SQL Edge SQL di Microsoft Fabric Warehouse di Microsoft Fabric
Mengembalikan nilai pertama dalam sekumpulan nilai yang diurutkan.
Sintaks
FIRST_VALUE ( [ scalar_expression ] ) [ IGNORE NULLS | RESPECT NULLS ]
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
Argumen
scalar_expression
Nilai yang akan dikembalikan. scalar_expression bisa berupa kolom, subkueri, atau ekspresi arbitrer lainnya yang menghasilkan satu nilai. Fungsi analitik lainnya tidak diizinkan.
[ ABAIKAN NULLS | HORMATI NULLS ]
Berlaku untuk: SQL Server (dimulai dengan SQL Server 2022 (16.x)), Azure SQL Database, Azure SQL Managed Instance, Azure SQL Edge
IGNORE NULLS
- Abaikan nilai null dalam himpunan data saat menghitung nilai pertama atas partisi.
RESPECT NULLS
- Hormati nilai null dalam himpunan data saat menghitung nilai pertama atas partisi. RESPECT NULLS
adalah perilaku default jika opsi NULLS tidak ditentukan.
Untuk informasi selengkapnya tentang argumen ini di Azure SQL Edge, lihat Menghambat nilai yang hilang.
OVER ( [ partition_by_clause ] order_by_clause [ rows_range_clause ] )
partition_by_clause membagi tataan hasil yang dihasilkan oleh klausul FROM menjadi partisi tempat fungsi diterapkan. Jika tidak ditentukan, fungsi memperlakukan semua baris hasil kueri yang ditetapkan sebagai grup tunggal.
order_by_clause menentukan urutan logis tempat operasi dilakukan. Order_by_clause diperlukan.
rows_range_clause selanjutnya membatasi baris dalam partisi dengan menentukan titik awal dan akhir.
Untuk informasi selengkapnya, lihat Klausul OVER (Transact-SQL).
Jenis yang dikembalikan
Jenis yang sama dengan scalar_expression.
Keterangan
FIRST_VALUE
bersifat nondeterministik. Untuk informasi selengkapnya, lihat Fungsi deterministik dan nondeterministik.
Contoh
J. Menggunakan FIRST_VALUE atas kumpulan hasil kueri
Contoh berikut menggunakan FIRST_VALUE
untuk mengembalikan nama produk yang paling murah dalam kategori produk tertentu.
USE AdventureWorks2022;
GO
SELECT Name,
ListPrice,
FIRST_VALUE(Name) OVER (
ORDER BY ListPrice ASC
) AS LeastExpensive
FROM Production.Product
WHERE ProductSubcategoryID = 37;
Berikut set hasilnya.
Name ListPrice LeastExpensive
----------------------- --------------------- --------------------
Patch Kit/8 Patches 2.29 Patch Kit/8 Patches
Road Tire Tube 3.99 Patch Kit/8 Patches
Touring Tire Tube 4.99 Patch Kit/8 Patches
Mountain Tire Tube 4.99 Patch Kit/8 Patches
LL Road Tire 21.49 Patch Kit/8 Patches
ML Road Tire 24.99 Patch Kit/8 Patches
LL Mountain Tire 24.99 Patch Kit/8 Patches
Touring Tire 28.99 Patch Kit/8 Patches
ML Mountain Tire 29.99 Patch Kit/8 Patches
HL Road Tire 32.60 Patch Kit/8 Patches
HL Mountain Tire 35.00 Patch Kit/8 Patches
B. Menggunakan FIRST_VALUE atas partisi
Contoh berikut menggunakan FIRST_VALUE
untuk mengembalikan karyawan dengan jumlah jam liburan terkecil dibandingkan dengan karyawan lain dengan jabatan yang sama. Klausul PARTITION BY
mempartisi karyawan berdasarkan jabatan pekerjaan dan FIRST_VALUE
fungsi diterapkan ke setiap partisi secara independen. Klausa ORDER BY
yang ditentukan dalam OVER
klausul menentukan urutan logis di mana FIRST_VALUE
fungsi diterapkan ke baris di setiap partisi. Klausa ROWS UNBOUNDED PRECEDING
menentukan titik awal jendela adalah baris pertama dari setiap partisi.
USE AdventureWorks2022;
GO
SELECT JobTitle,
LastName,
VacationHours,
FIRST_VALUE(LastName) OVER (
PARTITION BY JobTitle ORDER BY VacationHours ASC ROWS UNBOUNDED PRECEDING
) AS FewestVacationHours
FROM HumanResources.Employee AS e
INNER JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
ORDER BY JobTitle;
Berikut set hasilnya.
JobTitle LastName VacationHours FewestVacationHours
----------------------------------- ------------------------- ------------- -------------------
Accountant Moreland 58 Moreland
Accountant Seamans 59 Moreland
Accounts Manager Liu 57 Liu
Accounts Payable Specialist Tomic 63 Tomic
Accounts Payable Specialist Sheperdigian 64 Tomic
Accounts Receivable Specialist Poe 60 Poe
Accounts Receivable Specialist Spoon 61 Poe
Accounts Receivable Specialist Walton 62 Poe