hive - 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 一个值。
解决方案
推荐阅读
- java - 使用java解决车辆路线问题时如何解决运行时问题而不得到结果
- node.js - 将用户卡保存在 Square Payments 中
- python - 存储和保存大量 Keras 模型的最有效方法是什么?
- node.js - 如何从nodejs中的html元素获取引用?
- pyspark - Dataframe pyspark 中的排序
- excel - 如何将此代码用于更多工作表范围(VBA)
- javascript - 自动提交隐藏的 reCAPTCHA 表单不起作用
- patch - 如何使linux内核checkpatch.pl静音错误:缺少签名者:行
- php - MySQL如何优化%LIKE%查询?
- sql - 比较不同 SQL Server 数据库中的相似表