PERCENTILE_disc,PERCENTILE_count 区别
时间: 2023-08-18 21:04:17 浏览: 86
`PERCENTILE_DISC`和`PERCENTILE_CONT`是Oracle中两个用于计算百分位数的函数,它们的主要区别在于它们如何处理输入数据中不存在的百分位数。
- `PERCENTILE_DISC`函数:用于计算离散型百分位数。它将结果集中的值按照指定的百分位数分成两部分,然后返回包含第一个部分的最大值的值。例如,如果指定的百分位数为50%,则`PERCENTILE_DISC`函数返回的是包含前50%最大值的值,而不是这些值的平均值。如果指定的百分位数在输入数据中不存在,则函数返回最接近该值的存在的值。
- `PERCENTILE_CONT`函数:用于计算连续型百分位数。它将结果集中的值按照指定的百分位数进行排序,并返回相应的值。例如,如果指定的百分位数为50%,则`PERCENTILE_CONT`函数返回的是包含前50%最大值的平均值。如果指定的百分位数在输入数据中不存在,则函数会计算并返回该值的线性插值。
`PERCENTILE_COUNT`函数是另一个与百分位数相关的函数,它用于计算给定列中的值的数量。它将输入值按照指定的百分位数分成两部分,并返回包含前一个部分的值的数量。例如,如果指定的百分位数为50%,则`PERCENTILE_COUNT`函数返回包含前50%最大值的数量。
总的来说,`PERCENTILE_DISC`和`PERCENTILE_CONT`是用于计算离散型和连续型百分位数的函数,而`PERCENTILE_COUNT`是用于计算给定列中值的数量的函数。
相关问题
PERCENTILE_DISC
PERCENTILE_DISC是一种SQL聚合函数,用于在一个分组中查找指定百分位数的值。它的语法为:PERCENTILE_DISC (percentage) WITHIN GROUP (ORDER BY expression)。其中percentage是要查找的百分位数,expression是要排序的列。该函数会按照expression列的值对数据进行排序,并返回在指定百分位数下的第一个值。如果有多个值与该百分位数相等,则返回第一个值。
引用中的示例代码中,PERCENTILE_DISC(0.6) WITHIN GROUP (ORDER BY SUM(amount) DESC) AS percentile_disc表示在按照amount列的值对数据进行降序排序后,查找60%分位数的值,并将其命名为percentile_disc。
引用中提到了PERCENTILE-DISC函数与CUME-DIST函数相反,它会在每个分组中检查累积分布的数值,直到找到大于或等于指定百分位数的值。这两个函数可以一起使用来计算分组中的百分位数。
doris百分位数与percentile_disc相同的
在Doris中,百分位数函数和percentile_disc函数是不同的,虽然它们都用于计算在一组数据中某个百分比处的特定值,但是它们的实现方式不同。
- 百分位数函数:Doris中的百分位数函数用于计算在一组数据中某个百分比处的值。例如,要计算一组数据中的第90个百分位数,可以使用以下语法:
```
SELECT percentile(col_name, 0.9) FROM my_table;
```
这将返回数据中排名第90%的值。百分位数函数可以使用各种算法来计算结果,例如TDigest算法等。
- percentile_disc函数:Doris中的percentile_disc函数用于计算在一组数据中某个百分比处的离散值。例如,要计算一组数据中的第90个百分位数,可以使用以下语法:
```
SELECT percentile_disc(0.9) WITHIN GROUP (ORDER BY col_name) FROM my_table;
```
这将返回数据中排名第90%的值,但是该值必须是原始数据中的一个具体值。如果该值不存在,则返回null。percentile_disc函数使用类似于排序的算法来计算结果。
因此,在Doris中,百分位数函数和percentile_disc函数是不同的,它们的实现方式不同,可以根据具体的需求选择使用哪个函数。