【发布时间】:2021-04-05 08:24:01
【问题描述】:
我已经看到了与我类似的问题的解决方案,但没有一个对我很有效。我也相信应该有办法让它发挥作用。
给定一张桌子
| ID | Date | target |
|---|---|---|
| 1 | 2020-01-01 | 1 |
| 1 | 2020-01-02 | 1 |
| 1 | 2020-01-03 | 0 |
| 1 | 2020-01-04 | 1 |
| 1 | 2020-01-04 | 0 |
| 1 | 2020-06-01 | 1 |
| 1 | 2020-06-02 | 1 |
| 1 | 2020-06-03 | 0 |
| 1 | 2020-06-04 | 1 |
| 1 | 2020-06-04 | 0 |
| 2 | 2020-01-01 | 1 |
ID 是 BIGINT,目标是 Int,Date 是 DATE
我想为每个 ID/Date 计算日期前 3 个月和 12 个月(含)内相同 ID 的总和和行数。输出示例:
| ID | Date | Sum_3 | Count_3 | Sum_12 | Count_12 |
|---|---|---|---|---|---|
| 1 | 2020-01-01 | 1 | 1 | 1 | 1 |
| 1 | 2020-01-02 | 2 | 2 | 2 | 2 |
| 1 | 2020-01-03 | 2 | 3 | 2 | 3 |
| 1 | 2020-01-04 | 3 | 5 | 3 | 5 |
| 1 | 2020-06-01 | 1 | 1 | 4 | 6 |
| 1 | 2020-06-02 | 2 | 2 | 5 | 7 |
| 1 | 2020-06-03 | 2 | 3 | 6 | 8 |
| 1 | 2020-06-04 | 3 | 5 | 7 | 10 |
| 2 | 2020-01-01 | 1 | 1 | 1 | 1 |
如何在 HIVE 中获得这段时间的结果? 我不确定是否应该使用分析函数(以及如何使用)、分组依据等...?
【问题讨论】:
-
这能回答你的问题吗? range between interval in Hive
-
那个答案的问题指向答案的 cmets - 但我会分析它,谢谢 - 而且,它不考虑计数
标签: sql datetime hive window-functions date-arithmetic