sql percentile
时间: 2023-07-12 16:39:40 浏览: 52
在 SQL 中,可以使用 PERCENTILE_CONT 或 PERCENTILE_DISC 函数来计算百分位数(percentile)。这些函数需要两个参数:一个是百分位数,另一个是要计算的列。PERCENTILE_CONT 函数返回连续的百分位数,而 PERCENTILE_DISC 函数返回离散的百分位数。
例如,以下 SQL 查询将返回 "my_column" 列的第 75 个百分位数:
```
SELECT PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY my_column) FROM my_table;
```
类似地,以下 SQL 查询将返回 "my_column" 列的第 90 个离散百分位数:
```
SELECT PERCENTILE_DISC(0.9) WITHIN GROUP (ORDER BY my_column) FROM my_table;
```
注意,在某些 DBMS 中,可能需要使用不同的语法或函数来计算百分位数。
相关问题
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函数相反,它会在每个分组中检查累积分布的数值,直到找到大于或等于指定百分位数的值。这两个函数可以一起使用来计算分组中的百分位数。
hive percentile_approx
在HiveSQL中,可以使用percentile()和percentile_approx()这两个函数来计算分位数。percentile()函数要求输入的字段必须是int类型的,而percentile_approx()函数则可以接受double类型的字段作为输入。
关于使用percentile()函数的方法,可以这样调用:percentile(col, p),其中col是要计算分位数的字段,p是分位数的值。
而对于使用percentile_approx()函数,可以这样写:explode(percentile_approx(cast(col as double), array(0.05, 0.5, 0.95), 9999)) as percentile,其中col是要计算分位数的字段,array(0.05, 0.5, 0.95)是要计算的分位数列表,9999是抽样的大小。