在impala中用普通字母对记录进行sql有效分类

wribegjk  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(397)

我在 Impala 有一张table( TBL1 ),它包含具有不同首字母数的不同名称。这个表包含大约300万条记录。我想在表中添加一个新属性,每个普通的第一个字母都有一个类。这和 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          |

...

2wnc66cl

2wnc66cl1#

这是你想要的吗?

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

“3”是您的参数。
请注意:在您的示例中,您似乎已按相反的字母顺序指定了新值。因此,你会想要 desc 对于 order by .

相关问题