APPROX_PERCENTILE_CONT (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 perkiraan nilai terinterpolasi dari kumpulan nilai dalam grup berdasarkan nilai persentil dan spesifikasi pengurutan. Karena ini adalah perkiraan fungsi, output akan berada dalam kesalahan berbasis peringkat yang terikat dengan keyakinan tertentu. Nilai persentil yang dikembalikan oleh fungsi ini didasarkan pada distribusi berkelanjutan dari nilai kolom dan hasilnya akan diinterpolasi. Karena ini, output mungkin bukan salah satu nilai dalam himpunan data. Salah satu kasus penggunaan umum untuk fungsi ini adalah menghindari outlier data. Fungsi ini dapat digunakan sebagai alternatif untuk PERCENTILE_CONT 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_CONT (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.

order_by_expression

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

Jenis yang dikembalikan

float(53)

Keterangan

Setiap null dalam himpunan data diabaikan.

Perkiraan fungsi persentil menggunakan sketsa KLL. Sketsa dibangun dengan membaca aliran data. Karena algoritma yang digunakan, fungsi ini membutuhkan lebih sedikit memori daripada rekan non-perkiraan (PERCENTILE_CONT).

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

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_CONT(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_CONT(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId;