Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Punkt końcowy analizy SQL w usłudze Microsoft Fabric
Hurtownia danych w usłudze Microsoft Fabric
Baza danych SQL w usłudze Microsoft Fabric
Oblicza określony percentyl dla posortowanych wartości w całym zestawie wierszy lub w odrębnych partycjach zestawu wierszy w programie SQL Server. Dla danej wartości percentylu PPERCENTILE_DISC sortuje wartości wyrażeń w klauzuli ORDER BY . Następnie zwraca wartość z najmniejszą CUME_DIST wartością podaną (w odniesieniu do tej samej specyfikacji sortowania), która jest większa lub równa P. Na przykład PERCENTILE_DISC (0.5) oblicza 50. percentyl (czyli medianę) wyrażenia.
PERCENTILE_DISC oblicza percentyl na podstawie dyskretnego rozkładu wartości kolumn. Wynik jest równy określonej wartości kolumny.
Transact-SQL konwencje składni
Składnia
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Arguments
literal
Percentyl do obliczenia. Wartość musi należeć do zakresu od 0,0 do 1,0.
W OBRĘBIE GRUPY ( UPORZĄDKOWANY PRZEZ order_by_expression [ ASC | OPIS ] )
Określa listę wartości do sortowania i obliczania percentylu. Dozwolone jest tylko jedno order_by_expression . Domyślna kolejność sortowania jest rosnąca. Lista wartości może być dowolnego typu danych, które są prawidłowe dla operacji sortowania.
KONIEC ( <partition_by_clause> )
FROM Dzieli zestaw wyników klauzuli na partycje. Funkcja percentyla jest stosowana do tych partycji. Aby uzyskać więcej informacji, zobacz SELECT — OVER, klauzula. Klauzula <> ORDER BY i <wiersze lub klauzula>PERCENTILE_DISC zakresu nie mogą być określone w funkcji.
Typy zwracane
Typ zwracany jest określany przez typ order_by_expression .
Obsługa zgodności
W obszarze poziom zgodności 110 i wyższy WITHIN GROUP jest zastrzeżonym słowem kluczowym. Aby uzyskać więcej informacji, zobacz ALTER DATABASE compatibility level (Poziom zgodności ALTER DATABASE).
Uwagi
Wszystkie wartości null w zestawie danych są ignorowane.
PERCENTILE_DISC jest niedeterministyczny. Aby uzyskać więcej informacji, zobacz Funkcje deterministyczne i niedeterministyczne.
Przykłady
Podstawowy przykład składni
W poniższym przykładzie użyto PERCENTILE_CONT instrukcji i PERCENTILE_DISC do znalezienia mediany wynagrodzenia pracowników poszczególnych działów. Mogą nie zwracać tej samej wartości:
-
PERCENTILE_CONTZwraca odpowiednią wartość, nawet jeśli nie istnieje w zestawie danych. -
PERCENTILE_DISCzwraca rzeczywistą wartość zestawu.
USE AdventureWorks2022;
SELECT DISTINCT Name AS DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Oto zestaw wyników częściowych.
DepartmentName MedianCont MedianDisc
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
Podstawowy przykład składni
W poniższym przykładzie użyto PERCENTILE_CONT instrukcji i PERCENTILE_DISC do znalezienia mediany wynagrodzenia pracowników poszczególnych działów. Mogą nie zwracać tej samej wartości:
-
PERCENTILE_CONTZwraca odpowiednią wartość, nawet jeśli nie istnieje w zestawie danych. -
PERCENTILE_DISCzwraca rzeczywistą wartość zestawu.
-- Uses AdventureWorks
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Oto zestaw wyników częściowych.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000