Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2022 (16.x) dan versi
yang lebih baru Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database di Microsoft Fabric
Fungsi ini mengembalikan nilai maksimum dari daftar satu atau beberapa ekspresi.
Sintaks
GREATEST ( expression1 [ , ...expressionN ] )
Argumen
ekspresi1, ekspresiN
Daftar ekspresi yang dipisahkan koma dari jenis data yang sebanding. Fungsi ini GREATEST memerlukan setidaknya satu argumen dan mendukung tidak lebih dari 254 argumen.
Setiap ekspresi dapat berupa konstanta, variabel, nama kolom atau fungsi, dan kombinasi operator aritmatika, bitwise, dan string apa pun. Fungsi agregat dan subkueri skalar diizinkan.
Jenis yang dikembalikan
Mengembalikan tipe data dengan prioritas tertinggi dari kumpulan jenis yang diteruskan ke fungsi. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).
Jika semua argumen memiliki jenis data yang sama dan jenisnya didukung untuk perbandingan, GREATEST mengembalikan jenis tersebut.
Jika tidak, fungsi akan secara implisit mengonversi semua argumen ke jenis data dengan prioritas tertinggi sebelum perbandingan dan menggunakan jenis ini sebagai jenis pengembalian.
Untuk jenis numerik, skala jenis pengembalian akan sama dengan argumen prioritas tertinggi, atau skala terbesar jika lebih dari satu argumen adalah jenis data prioritas tertinggi.
Keterangan
Semua ekspresi dalam daftar argumen harus dari jenis data yang sebanding dan yang dapat dikonversi secara implisit ke jenis data argumen dengan prioritas tertinggi.
Konversi implisit semua argumen ke jenis data prioritas tertinggi terjadi sebelum perbandingan.
Jika konversi jenis implisit antara argumen tidak didukung, fungsi akan gagal dan mengembalikan kesalahan.
Untuk informasi selengkapnya tentang konversi implisit dan eksplisit, lihat Konversi Tipe Data (Mesin Database).
Jika satu atau beberapa argumen tidak NULL, maka NULL argumen diabaikan selama perbandingan. Jika semua argumen adalah NULL, maka GREATEST mengembalikan NULL.
Perbandingan argumen karakter mengikuti aturan Prioritas Kolase (Transact-SQL).
Jenis berikut tidak didukung untuk perbandingan di GREATEST: varchar(max), varbinary(max) atau nvarchar(max) melebihi 8.000 byte, kursor, geometri, geografi, gambar, jenis yang ditentukan pengguna yang tidak diurutkan byte, ntext, tabel, teks, dan xml.
Jenis data varchar(max), varbinary(max), dan nvarchar(max) didukung untuk argumen yang masing-masing 8.000 byte atau kurang, dan akan dikonversi secara implisit ke varchar(n), varbinary(n), dan nvarchar(n), sebelum perbandingan.
Misalnya, varchar(max) dapat mendukung hingga 8.000 karakter jika menggunakan set karakter pengodean byte tunggal, dan nvarchar(max) dapat mendukung hingga 4.000 byte-pairs (dengan asumsi pengodean karakter UTF-16).
Contoh
J. Mengembalikan nilai maksimum dari daftar konstanta
Contoh berikut mengembalikan nilai maksimum dari daftar konstanta yang disediakan.
Skala jenis pengembalian ditentukan oleh skala argumen dengan jenis data prioritas tertinggi.
SELECT GREATEST('6.62', 3.1415, N'7') AS GreatestVal;
GO
Berikut set hasilnya.
GreatestVal
--------
7.0000
(1 rows affected)
B. Mengembalikan nilai maksimum dari daftar konstanta karakter
Contoh berikut mengembalikan nilai maksimum dari daftar konstanta karakter yang disediakan.
SELECT GREATEST('Glacier', N'Joshua Tree', 'Mount Rainier') AS GreatestString;
GO
Berikut set hasilnya.
GreatestString
-------------
Mount Rainier
(1 rows affected)
C. Mengembalikan nilai maksimum dari daftar argumen kolom
Contoh ini mengembalikan nilai maksimum dari daftar argumen kolom dan mengabaikan NULL nilai selama perbandingan. Sampel ini menggunakan AdventureWorksLT database, yang dapat dengan cepat diinstal sebagai database sampel untuk Azure SQL Database baru. Untuk informasi selengkapnya, lihat Database sampel AdventureWorks.
SELECT P.Name,
P.SellStartDate,
P.DiscontinuedDate,
PM.ModifiedDate AS ModelModifiedDate,
GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) AS LatestDate
FROM SalesLT.Product AS P
INNER JOIN SalesLT.ProductModel AS PM
ON P.ProductModelID = PM.ProductModelID
WHERE GREATEST(P.SellStartDate, P.DiscontinuedDate, PM.ModifiedDate) >= '2007-01-01'
AND P.SellStartDate >= '2007-01-01'
AND P.Name LIKE 'Touring %'
ORDER BY P.Name;
Berikut set hasilnya.
LatestDate memilih nilai tanggal terbesar dari tiga nilai, mengabaikan NULL.
Name SellStartDate DiscontinuedDate ModelModifiedDate LatestDate
-------------------- ----------------------- ------------------- ----------------------- -----------------------
Touring Pedal 2007-07-01 00:00:00.000 NULL 2009-05-16 16:34:29.027 2009-05-16 16:34:29.027
Touring Tire 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000
Touring Tire Tube 2007-07-01 00:00:00.000 NULL 2007-06-01 00:00:00.000 2007-07-01 00:00:00.000
(3 rows affected)
D. Gunakan GREATEST dengan variabel lokal
Contoh ini digunakan GREATEST untuk menentukan nilai maksimum daftar variabel lokal dalam predikat WHERE klausa.
CREATE TABLE dbo.Studies (
VarX VARCHAR(10) NOT NULL,
Correlation DECIMAL(4, 3) NULL
);
INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
('Var2', 0.825),
('Var3', 0.61);
GO
DECLARE @PredictionA DECIMAL(2, 1) = 0.7;
DECLARE @PredictionB DECIMAL(3, 1) = 0.65;
SELECT VarX,
Correlation
FROM dbo.Studies
WHERE Correlation > GREATEST(@PredictionA, @PredictionB);
GO
Berikut set hasilnya. Hanya nilai yang lebih besar dari 0,7 yang ditampilkan.
VarX Correlation
---------- -----------
Var2 .825
(1 rows affected)
E. Gunakan GREATEST dengan kolom, konstanta, dan variabel
Contoh ini digunakan GREATEST untuk menentukan nilai maksimum daftar campuran yang mencakup kolom, konstanta, dan variabel.
CREATE TABLE dbo.Studies (
VarX VARCHAR(10) NOT NULL,
Correlation DECIMAL(4, 3) NULL
);
INSERT INTO dbo.Studies
VALUES ('Var1', 0.2),
('Var2', 0.825),
('Var3', 0.61);
GO
DECLARE @VarX DECIMAL(4, 3) = 0.59;
SELECT VarX,
Correlation,
GREATEST(Correlation, 0, @VarX) AS GreatestVar
FROM dbo.Studies;
GO
Berikut set hasilnya.
VarX Correlation GreatestVar
---------- --------------------- ---------------------
Var1 0.200 0.590
Var2 0.825 0.825
Var3 0.610 0.610
(3 rows affected)