首页 > 解决方案 > Hiveql - 如何计算每个 ID 的百分位数

问题描述

我需要一些帮助来查找每个 ID 的多个值的百分位数。我的表如下;

ID 分数 score_date 实际分数 调查日期
一个 6.46 2021-04-01 5.25 2021-04-30
一个 4.21 2021-04-03 5.25 2021-04-30
一个 7.33 2021-04-05 5.25 2021-04-30
一个 6.45 2021-04-05 5.25 2021-04-30
3.45 2021-04-15 4.30 2021-04-20

本质上,我需要找到每个 ID 的 Survey_Date - 30 天所有分数的第 25 个百分位以及平均错误,例如第 25 个百分位分数 - 实际分数。

我可以用; WHERE score_date <survey_date and score_date >= date_sub(survey_date, 30)将结果限制在调查日期前 30 天。我也知道 Hive 有一个内置函数 'PERCENTILE_APPROX()' 但是我不确定如何为每个 ID 获得一个值。

我研究过使用 OVER PARTITION BY 但无法让它与 PERCENTILE_APPROX() 一起使用

我想要的输出如下;

ID 25th_percentile_score 平均误差
一个 4.21 -1.04

每个 ID 一个值。

标签: hivehiveql

解决方案


推荐阅读