Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kembalikan Persentase Kumpulan Hasil di SQL Server

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan Antara Fungsi Bernilai Tabel Multi-Pernyataan &Fungsi Bernilai Tabel Sebaris di SQL Server

  2. Cara Mengonversi dari Satu Format Tanggal ke Format Lain di SQL Server menggunakan CONVERT()

  3. Gagal memperbarui database .mdf karena database hanya-baca (aplikasi Windows)

  4. Kesalahan SQL:Sintaks salah di dekat kata kunci 'Pengguna'

  5. Cara Menonaktifkan Semua Pemicu di Database SQL Server