APPROX_PERCENTILE_DISC (T-SQL)

Berlaku untuk: Titik akhir analitik SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL di Microsoft FabricWarehouse di Microsoft Fabric

Fungsi ini mengembalikan nilai dari kumpulan nilai dalam grup berdasarkan persentil yang disediakan dan spesifikasi pengurutan. Karena ini adalah perkiraan fungsi, output akan berada dalam kesalahan berbasis peringkat yang terikat dengan keyakinan tertentu. Karena perkiraan persentil ini didasarkan pada distribusi diskrit dari nilai kolom, nilai output akan sama dengan salah satu nilai tertentu dalam kolom. Fungsi ini dapat digunakan sebagai alternatif untuk PERCENTILE_DISC untuk himpunan data besar di mana kesalahan yang dapat diabaikan dengan respons yang lebih cepat dapat diterima dibandingkan dengan nilai persentil yang akurat dengan waktu respons yang lambat.

Konvensi sintaks transact-SQL

Sintaks

APPROX_PERCENTILE_DISC (numeric_literal)  
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC])

Argumen

numeric_literal

Persentil untuk dihitung. Nilai harus berkisar antara 0,0 dan 1,0. untuk menghitung persentil ke-10, nilai yang diteruskan adalah 0,10.

order_by_expression

Menentukan daftar nilai untuk mengurutkan dan menghitung persentil. Urutan pengurutan default adalah naik (ASC).  Hanya jenis data numerik yang diizinkan. Ekspresi harus mengevaluasi ke jenis numerik yang tepat atau perkiraan yang didukung, tanpa jenis data lain yang diizinkan. Jenis numerik yang didukung persis adalah int, bigint, smallint, tinyint, bit, smallmoney, dan uang. Perkiraan jenis numerik yang didukung adalah float dan nyata. Jenis data desimal dan float tidak didukung.

Jenis yang dikembalikan

Jenis pengembalian ditentukan oleh jenis order_by_expression .

Keterangan

Setiap null dalam himpunan data diabaikan.

Perkiraan fungsi persentil menggunakan sketsa KLL. Sketsa dibangun dengan membaca aliran data.

Fungsi ini memberikan jaminan kesalahan berbasis peringkat bukan berbasis nilai. Implementasi fungsi menjamin tingkat kesalahan hingga 1,33% dalam probabilitas 99%.

Perilaku yang diketahui

  • Output fungsi mungkin tidak sama di semua eksekusi. Algoritma yang digunakan untuk fungsi-fungsi ini adalah sketsa KLL yang merupakan algoritma acak. Setiap kali sketsa dibuat, nilai acak dipilih. Fungsi-fungsi ini memberikan jaminan kesalahan berbasis peringkat bukan berbasis nilai.

  • Implementasi fungsi menjamin hingga 1,33% kesalahan terikat dalam keyakinan 99%.

Dukungan kompatibilitas

Di bawah tingkat kompatibilitas 110 dan yang lebih tinggi, WITHIN GROUP adalah kata kunci yang dipesan. Untuk informasi selengkapnya, lihat MENGUBAH Tingkat Kompatibilitas DATABASE (Transact-SQL)..

Contoh

Contoh berikut membuat tabel, mengisinya dan menjalankan kueri sampel.

SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,1), (3,NULL), (4,NULL), (4,NULL)
GO
SELECT DeptId,
APPROX_PERCENTILE_DISC(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_DISC(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId