Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwróć procent zbioru wyników w SQL Server

W SQL Server możesz użyć TOP klauzula ograniczająca liczbę wierszy zwracanych z zapytania do określonego procentu zbioru wyników.

Na przykład możesz zwrócić górne 10% wyników lub dowolny procent, którego potrzebujesz.

Przykład 1 – Pełny zestaw wyników

Najpierw zwróćmy pełny zestaw wyników:

SELECT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

+-----------+--------------------------+
| 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                   |
+-----------+--------------------------+

Tak więc w pełnym zestawie wyników są 22 wiersze.

Przykład 2 – zwrot 10% najlepszych wyników

Teraz zwróćmy górne 10 procent tych wyników:

SELECT TOP(10) PERCENT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

+-----------+-----------------------+
| AlbumId   | AlbumName             |
|-----------+-----------------------|
| 1         | Powerslave            |
| 2         | Powerage              |
| 3         | Singing Down the Lane |
+-----------+-----------------------+

W takim przypadku zwracane są trzy wiersze.

Możesz zauważyć, że 10 procent z 22 to w rzeczywistości 2,2 (nie 3). Oczywiście SQL Server nie może przedstawić wierszy 2.2, więc zaokrągla wyniki w górę.

Przykład 2 – zaokrąglanie w górę zamiast w dół

Jeśli zastanawiasz się, dlaczego SQL Server nie zaokrągla wyników w dół za każdym razem, gdy część ułamkowa jest mniejsza niż 5, spójrz na następujący przykład.

SELECT TOP(1) PERCENT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

+-----------+-------------+
| AlbumId   | AlbumName   |
|-----------+-------------|
| 1         | Powerslave  |
+-----------+-------------+

Pamiętaj, że pełny zestaw wyników miał 22 wiersze, więc 1 procent z 22 wierszy oznaczałby, że należy zwrócić 0,22 wiersza.

I właśnie dlatego nie chcielibyśmy być zaokrąglani w dół. Jeśli 0,22 wiersza zostanie zaokrąglone w dół, żadne wiersze nie zostaną zwrócone, co błędnie prowadzi nas do wniosku, że nie ma dopasowań dla naszego zapytania.

Przykład 3 – zero procent

Jak można się spodziewać, użycie 0 procent zwróci zero wierszy.

SELECT TOP(0) PERCENT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

(0 rows affected)

Przykład 4 – Maksymalny procent

Możesz podać tylko wartości procentowe z zakresu od 0 do 100.

Oto przykład próby użycia wartości większej niż 100:

SELECT TOP(120) PERCENT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

Msg 1031, Level 15, State 1, Line 2
Percent values must be between 0 and 100.

Przykład 5 – Ujemne wartości procentowe

Jak wspomniano, wartości procentowe muszą mieścić się w zakresie od 0 do 100, więc jeśli podasz ujemną wartość procentową, pojawi się błąd.

SELECT TOP(-10) PERCENT
  AlbumId,
  AlbumName 
FROM Albums
ORDER BY AlbumId;

Wynik:

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. Instrukcja SQL Server RAISERROR z prostymi przykładami

  2. Zmień nazwę klucza podstawowego w SQL Server (T-SQL)

  3. Czy integracja SQL Server CLR obsługuje pliki konfiguracyjne?

  4. Jak zapobiec automatycznemu zamykaniu programu SQL Server LocalDB?

  5. Unikalny złożony klucz składający się z dwóch pól w programie SQL Server z automatycznym przyrostem drugiego pola