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

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

我在 Impala 有一张table( TBL1 ),它包含具有不同首字母数的不同名称。这个表包含大约300万条记录。我想在表中添加一个新属性,每个普通的第一个字母都有一个类。这和 DENSE_RANK 但第一个字母的数量是动态的。同一首字母的数目不应少于 p=3 信件( p =参数)。
以下是表格和所需结果的示例:

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

...

2wnc66cl

2wnc66cl1#

这是你想要的吗?

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

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

相关问题