Di SQL Server, Anda dapat menggunakan TOP
klausa untuk membatasi baris yang dikembalikan dari kueri ke persentase tertentu dari kumpulan hasil.
Misalnya, Anda dapat mengembalikan 10% teratas dari hasil, atau berapa pun persentase yang Anda butuhkan.
Contoh 1 – Kumpulan Hasil Lengkap
Pertama, mari kembalikan set hasil lengkap:
SELECT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
+-----------+--------------------------+ | AlbumId | AlbumName | |-----------+--------------------------| | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | | 21 | Yo Wassup | | 22 | Busted | +-----------+--------------------------+
Jadi ada 22 baris dalam set hasil lengkap.
Contoh 2 – Mengembalikan 10% Hasil Teratas
Sekarang mari kita kembalikan 10 persen teratas dari hasil tersebut:
SELECT TOP(10) PERCENT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
+-----------+-----------------------+ | AlbumId | AlbumName | |-----------+-----------------------| | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | +-----------+-----------------------+
Dalam hal ini, tiga baris dikembalikan.
Anda mungkin memperhatikan bahwa 10 persen dari 22 sebenarnya adalah 2,2 (bukan 3). Jelas SQL Server tidak dapat menampilkan 2,2 baris, sehingga membulatkan hasilnya.
Contoh 2 – Membulatkan Ke Atas Bukan Ke Bawah
Jika Anda bertanya-tanya mengapa SQL Server tidak membulatkan hasil turun setiap kali bagian pecahan kurang dari 5, perhatikan contoh berikut.
SELECT TOP(1) PERCENT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
+-----------+-------------+ | AlbumId | AlbumName | |-----------+-------------| | 1 | Powerslave | +-----------+-------------+
Ingat bahwa set hasil lengkap memiliki 22 baris, jadi 1 persen dari 22 baris berarti 0,22 baris harus dikembalikan.
Dan inilah tepatnya mengapa kami tidak ingin dibulatkan ke bawah. Jika 0,22 baris dibulatkan ke bawah, tidak ada baris yang dikembalikan, sehingga kami salah menyimpulkan bahwa tidak ada kecocokan untuk kueri kami.
Contoh 3 – Nol Persen
Seperti yang Anda harapkan, menggunakan 0 persen akan mengembalikan nol baris.
SELECT TOP(0) PERCENT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
(0 rows affected)
Contoh 4 – Persentase Maksimum
Anda hanya dapat memberikan nilai persentase antara 0 dan 100.
Berikut ini contoh mencoba menggunakan nilai yang lebih tinggi dari 100:
SELECT TOP(120) PERCENT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
Msg 1031, Level 15, State 1, Line 2 Percent values must be between 0 and 100.
Contoh 5 – Persentase Negatif
Seperti yang disebutkan, nilai persentase harus antara 0 dan 100, jadi Anda akan mendapatkan error jika memberikan persentase negatif.
SELECT TOP(-10) PERCENT AlbumId, AlbumName FROM Albums ORDER BY AlbumId;
Hasil:
Msg 1031, Level 15, State 1, Line 3 Percent values must be between 0 and 100.