Fungsi logika - GREATEST (Transact-SQL)
Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL di Microsoft FabricWarehouse di Microsoft Fabric
Fungsi ini mengembalikan nilai maksimum dari daftar satu atau beberapa ekspresi.
Sintaks
GREATEST ( expression1 [ , ...expressionN ] )
Argumen
expression1, expressionN
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 adalah hasil yang ditetapkan.
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 adalah hasil yang ditetapkan.
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 adalah hasil yang ditetapkan. 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 adalah hasil yang ditetapkan. 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 adalah hasil yang ditetapkan.
VarX Correlation GreatestVar
---------- --------------------- ---------------------
Var1 0.200 0.590
Var2 0.825 0.825
Var3 0.610 0.610
(3 rows affected)
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk