假设有一个表 sales
,包含 amount
列和 category
列,我们想要按 category
分组,计算每个分组的中位数(50%百分位数):
SELECT
category,
PERCENTILE_APPROX(amount, 0.5) OVER (PARTITION BY category) AS median_amount
FROM
sales;
在这个例子中,PERCENTILE_APPROX
函数与 OVER
子句结合使用,按 category
分组计算每个分组的中位数。PARTITION BY category
表示对 category
列的值进行分组,PERCENTILE_APPROX(amount, 0.5)
计算每个分组的中位数。
注意事项
-
数据类型:
expr
列的数据类型必须是数值类型,如INT
或DOUBLE
。 -
性能优化:
accuracy
参数可以调整近似计算的精度。较大的accuracy
值会提高计算精度,但可能会增加计算时间和内存开销。 -
空值处理:
PERCENTILE_APPROX
会忽略NULL
值。
通过结合 PERCENTILE_APPROX
和 OVER
,可以灵活地对分组数据或分区数据进行百分位数的近似计算,适用于大规模数据集的分析场景。
点击链接查看和 Kimi 的对话 https://kimi.moonshot.cn/share/cvlqnmjbpak5kde9dif0