Fungsi SQL Server
Dalam sistem database pada umumnya dan SQL Server pada khususnya, fungsi adalah potongan kode yang mengambil nol atau satu masukan dan mengembalikan satu keluaran atau larik.
Fungsi Bernilai Tabel yang biasanya ditentukan pengguna dapat mengembalikan larik, tetapi fungsi SQL Server bawaan biasanya adalah Fungsi Bernilai Skalar. Kelas ketiga fungsi di SQL Server adalah Fungsi Bernilai Agregat. Fungsi MIN dan MAX SQL Server adalah Fungsi Bernilai Agregat.
Fungsi Jendela adalah kelas yang relatif baru. Mereka melakukan perhitungan seperti fungsi agregat tetapi melakukannya pada serangkaian baris yang terkait dengan baris saat ini. Sementara fungsi agregat cenderung menghasilkan satu hasil dengan mengerjakan kolom, Fungsi Jendela lebih cenderung menghasilkan hasil untuk setiap baris.
Klasifikasi Fungsi SQL Server juga dapat didasarkan pada tipe data – Fungsi String, Fungsi Numerik, dan Fungsi Tanggal. Kita dapat menyimpulkan bahwa Fungsi String beroperasi pada nilai string, misalnya, LENGTH().
MIN &MAX
Fungsi MIN dan MAX adalah fungsi agregat yang sangat sederhana. Namun, mereka dapat menjawab berbagai macam pertanyaan tergantung pada kumpulan data yang kita hadapi.
Misalnya, ketika kami mengeluarkan pernyataan SELECT, kami mengajukan pertanyaan kepada SQL Server . Oleh karena itu, kami mengatakan kami menjalankan kueri . Untuk menanyakan SQL Server tentang nilai minimum dan maksimum dalam sebuah kolom, kami menggunakan sintaks berikut:
SELECT MIN(column_name) FROM table_name;
SELECT MAX(column_name) FROM table_name;
Saat kami menggunakan sintaks ini, SQL Server mengembalikan nilai tunggal. Dengan demikian, kita dapat mempertimbangkan fungsi MIN() dan MAX() Fungsi Bernilai Skalar.
Listing 1 menampilkan pernyataan sederhana untuk mendapatkan nilai minimum dan maksimum pada berat pengiriman dari Sales.Orders tabel TSQLV4 Itzik Bengan basis data:
-- Listing 1: Basic MIN() and MAX() Function Queries
USE TSQLV4
GO
SELECT * FROM [Sales].[Orders];
-- Without Column Aliases
SELECT MIN(freight) FROM [Sales].[Orders];
SELECT MAX(freight) FROM [Sales].[Orders];
-- Without Column Aliases
SELECT MIN(freight) min_freight FROM [Sales].[Orders];
SELECT MAX(freight) max_freight FROM [Sales].[Orders];
GROUP MENURUT
“Berapa berat pengiriman minimum dan maksimum per negara?” Untuk menjawab pertanyaan ini, kita memerlukan GROUP BY ayat. Contohnya ada di Daftar 2 di bawah ini.
Kueri pertama-tama mengelompokkan data menurut negara kapal, dan kemudian mengembalikan bobot pengiriman minimum dan maksimum masing-masing per negara. Kami dapat mengonfirmasi ini dengan mengeluarkan kueri terakhir dalam daftar (validasi).
-- Listing 2: MIN and MAX Freight By Country
-- Minimum by Country
SELECT shipcountry, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY shipcountry;
-- Maximum by Country
SELECT shipcountry, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY shipcountry;
-- Validation
SELECT * FROM [Sales].[Orders] WHERE shipcountry='Finland'
ORDER BY freight;
-- Listing 2: MIN and MAX Freight by Country
-- Minimum by Customer
SELECT custid, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY custid;
-- Maximum by Customer
SELECT custid, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY custid;
-- Validation
SELECT * FROM [Sales].[Orders] WHERE custid='23'
ORDER BY freight;
Gambar 3 menunjukkan hasilnya. Kita dapat melakukan hal serupa dengan kolom lain – custid kolom. Dalam hal ini, kami menjawab pertanyaan, “Berapa ketakutan minimum dan maksimum untuk setiap pelanggan?”
Pertanyaan Lainnya
Kami dapat menyelidiki data lebih lanjut untuk mengetahui negara mana yang memiliki bobot pengiriman kurang dari 1 atau lebih dari 800. Kami melakukannya dengan menggunakan HAVING klausa yang memfilter kumpulan hasil yang disegmentasikan ke dalam grup berdasarkan GROUP BY klausa.
-- Listing 3: Introducing the HAVING Clause
SELECT shipcountry, MIN(freight) min_freight FROM [Sales].[Orders]
GROUP BY shipcountry
HAVING MIN(freight)<1;
SELECT shipcountry, MAX(freight) max_freight FROM [Sales].[Orders]
GROUP BY shipcountry
HAVING MAX(freight)>800;
Bekerja dengan Tanggal
Saat menerapkan fungsi MIN() dan MAX() ke tanggal, kami berharap untuk melihat paling awal dan terbaru tanggal masing-masing. Lihat contohnya – tanggal disimpan sebagai bilangan bulat secara internal di SQL Server.
-- Listing 4: Working with Dates
SELECT MIN(orderdate) earliest_date FROM [Sales].[Orders];
SELECT MAX(orderdate) latest_date FROM [Sales].[Orders];
Kita bisa menggali lebih dalam dengan menanyakan pelanggan mana yang melakukan pemesanan pertama dan pelanggan mana yang paling baru melakukan pemesanan. Untuk itu, kita menggunakan kode pada Listing 5. Gambar 6 menunjukkan bahwa custid 85 pelanggan melakukan pesanan paling awal, sedangkan custid 9 pelanggan melakukan pemesanan terakhir.
-- Listing 5: Customer Order Dates
SELECT custid, MIN(orderdate) earliest_date FROM [Sales].[Orders]
GROUP BY custid
ORDER BY earliest_date;
SELECT custid, MAX(orderdate) latest_date FROM [Sales].[Orders]
GROUP BY custid
ORDER BY latest_date desc;
Kesimpulan
Pada artikel ini, kami secara singkat mendemonstrasikan penggunaan fungsi agregat MIN() dan MAX() di SQL Server. Peran fungsi ini adalah mengembalikan nilai minimum dan maksimum untuk rentang tertentu yang disimpan dalam kolom tabel.
Kita dapat menjawab lebih banyak pertanyaan dengan fungsi-fungsi ini dengan menggabungkannya dengan perintah T-SQL lainnya seperti klausa GROUP BY, ORDER BY, dan HAVING.
Banyak alat menyederhanakan dan mempercepat kinerja tugas tersebut, dan Anda dapat memilih solusi apa pun yang memenuhi kebutuhan Anda. Di antaranya, SQL Complete dari Devart melakukan semua manipulasi yang diperlukan dan menyediakan fitur SSMS Grid Aggregate di tempat yang menghitung MIN, MAX, dan AVG dari nilai yang dipilih dalam grid.