0

我在 impala ( TBL1) 中有一个表,其中包含不同名称和不同数量的第一个常用字母。该表包含大约 3M 条记录。我想在表中添加一个新属性,其中每个常见的第一个字母都有一个类。它与工作方式相同,DENSE_RANK但首字母的数量是动态的。相同首字母的数量不应少于p=3字母(p= 参数)。
以下是表格示例和所需结果:

|  ID   |   Attr1      | New_Attr1   | Some more attribute...
+-------+--------------+-------------+-----------------------
|  1    | ZXA-12       |  1          |
|  2    | YL3300       |  2          |
|  3    | ZXA-123      |  1          |
|  4    | YL3400       |  2          |
|  5    | YL3-aaa      |  2          |
|  6    | TSA 789      |  3          |

...

4

1 回答 1

1

这是做你想做的吗?

select t.*,
       dense_rank() over (order by strleft(attr1, 3)) as newcol
from . . .;

“3”是您的参数。

注意:在您的示例中,您似乎已按字母倒序分配了新值。因此,你会想要desc.order by

于 2017-02-25T19:55:00.610 回答