【发布时间】:2019-03-21 11:44:10
【问题描述】:
我正在尝试使用MAX(case when col4='ABC' then col1 else 0 end) OVER (PARTITION BY col2 order by **col3**)
col1~col2~col3~col4
30 A B1 ABC
35 A A1 ABC
36 A NULL NULL
40 A X1 ABC
50 B M1 ABD
但我得到的结果是 40,但我想要 35 作为我的结果。好像
按 col3 排序 在 MAX 聚合之前未应用。有没有其他办法?
我无法在 where 子句中编写 row_number(),因为我们正在尝试创建列,并且它周围有很多列和复杂的逻辑。
目前我正在Teradata 中尝试,但实际上它将在HIVE 中实现。
【问题讨论】:
-
“结果为 40”是什么意思?这会在每一行添加一个具有不同结果的单独列。
-
是的,据我所知,它将提供一个单独的列。我的意思是这里单独列的值
-
“我希望 MAX(col1) 中的值按 col3 ASC 顺序排序并按 col2 分区”和“按 ... 的顺序在 .. ."。鉴于 MAX() 的结果永远不会受到聚合输入的任何 ORDER 的影响,是什么让您认为它很重要?您需要更清楚、更准确地说明您的问题陈述。