为每个本地组分配唯一的值

dauxcl2d  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(254)

我的示例输入表是:

  1. x y
  2. 1 a
  3. 3 b
  4. 5 b
  5. 4 a
  6. 2 a
  7. 6 b

我想得到这个:

  1. x y z
  2. 1 a 1
  3. 2 a 1
  4. 3 b 2
  5. 4 a 3
  6. 5 b 4
  7. 6 b 4

首先,行必须按 x 然后是 y 应接收其唯一编号(例如 z ). 最后我想用 z . 尽管操作似乎很简单,但我还是无法提出查询。

bvk5enib

bvk5enib1#

你可以使用 lag() 然后是一个累积的总和:

  1. select x, y,
  2. sum(case when y = prev_y then 0 else 1 end) over (order by x) as z
  3. from (select t.*,
  4. lag(y) over (order by x) as prev_y
  5. from t
  6. ) t;

相关问题