有没有解决这个问题的好方法:假设我想为给定的分组选择至少比先前选择的记录早6个月的记录。
例如,我有:
Col A Col B Date
1 A 2015-01-01 00:00:00
1 A 2014-10-01 00:00:00
1 A 2014-05-01 00:00:00
1 A 2014-01-01 00:00:00
1 B 2014-01-01 00:00:00
2 A 2015-01-01 00:00:00
2 A 2014-10-01 00:00:00
2 A 2014-01-01 00:00:00
2 A 2013-10-01 00:00:00
我只想选择与之前选择的日期相隔至少6个月的日期。即它将返回:
Col A Col B Date
1 A 2015-01-01 00:00:00
1 A 2014-05-01 00:00:00
1 B 2014-01-01 00:00:00
2 A 2015-01-01 00:00:00
2 A 2014-01-01 00:00:00
如果您想选择与最新订单相关的订单,我很清楚如何使用订单来完成这项工作
(即:
SELECT b.date, b..., a.latest_date
FROM(
SELECT *, row_number OVER PARTITION BY Col A, Col B ORDER BY Date as row_number
FROM table1) temp
WHERE row_number = 1) a
INNER JOIN TABLE 1 b
ON KEY)
WHERE datediff(date, latestdate)/365 > 0.5
差不多吧
,但我有点不清楚你们是怎么做到的。有没有一种方法可以在hive/scala中递归地实现这一点?
1条答案
按热度按时间qzlgjiam1#
嗨,有一个窗口滞后和超前的概念,概念是Hive和Spark,你可以实现这两个任务。这是spark中的代码。