我在 hive 里有一张table,看起来像下面的
fruit value
apple 2
apple 3
apple 4
plum 2
plum 3
plum 4
我想在表中循环,比较前一个值和fruit,并基于循环创建一个新列(total)。这就是逻辑
if [fruit] = previous[fruit] then total = prev[fruit]
新table应该是这样的
fruit value total
apple 2
apple 3 2
apple 4 3
plum 2
plum 3 2
plum 4 3
如何在配置单元中使用sql实现这一点?我还对查询中的结果进行了排序,以便按结果和升序值对其进行分组
2条答案
按热度按时间pkln4tw61#
sql表表示无序集。除非列指定顺序,否则不存在“上一行”。假设您有这样一个列,那么您可以使用
lag()
:这个
?
用于指定排序的列的名称。wj8zmpe12#
除了前面的答案之外,您还可以通过如下方式写入临时表来人为创建订单:
这将在原始表中重新创建顺序,并允许您执行gordon上面所说的操作