The SQL Server PERCENTILE_DISC will calculate a percentile of the sorted values within an entire row set, or within the partitions in a table. The basic syntax of the PERCENTILE_DISC analytic function is as shown below:
SELECT PERCENTILE_DISC(Numerical_Literal)
WITHIN GROUP ( ORDER BY_Clause)
OVER ( PARTITION_BY_Clause )
FROM [Source]
- Numerical_Literal: Specify the Percentile to compute. This value should be between 0.0 and 1.0
- WITHIN Group (Order By_Clause): This will sort the column data in a specified order within the group. Visit Order By Clause for a better knowing.
- Over (Partition_By_Clause): It separates the records selected by the SELECT Statement into SQL Server partitions.
We are going to utilize the below-shown data for this percentile disc demonstration

SQL PERCENTILE_DISC Example
This example shows how to calculate the percentile of the partitioned records present in a table. The following Query will Order the Data by Sales in Ascending Order, partition the data by Occupation. And then calculate the percentile for each partition independently.
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY [Sales] ASC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc]
FROM [Employee]

Let me change the Order by from Ascending order to Descending.
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,PERCENTILE_DISC(0.0) WITHIN GROUP (ORDER BY [Sales] DESC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc]
FROM [Employee]

PERCENTILE_DISC Example 2
In this case, we will use different numerical values inside the SQL PERCENTILE_DISC function.
SELECT [FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
,PERCENTILE_DISC(0.25) WITHIN GROUP (ORDER BY [Sales] ASC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc 1]
,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY [Sales] ASC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc 2]
,PERCENTILE_DISC(0.75) WITHIN GROUP (ORDER BY [Sales] ASC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc 3]
,PERCENTILE_DISC(1.0) WITHIN GROUP (ORDER BY [Sales] ASC)
OVER (PARTITION BY [Occupation]) AS [Percentile Disc 4]
FROM [Employee]
