【发布时间】:2019-10-30 16:47:21
【问题描述】:
我有一个如下所示的 sql (bigquery) 表。
| Name | DaysToGo |Task |ID |
|:-----:|:--------:|:------:|:--:|
| Joe | 50 | A | 1 |
| Joe | 49 | A | 2 |
| Joe | 48 | B | 1 |
| Joe | 47 | B | 2 |
| Joe | 46 | B | 3 |
| Joe | 45 | A | 1 |
| Joe | 47 | A | 2 |
| Joe | 46 | A | 3 |
| Tim | 50 | B | 1 |
| Tim | 49 | B | 2 |
| Tim | 48 | B | 3 |
| Tim | 47 | C | 1 |
| Tim | 46 | B | 1 |
| Tim | 45 | B | 2 |
| Tim | 47 | C | 1 |
| Tim | 46 | C | 2 |
我希望根据“任务”列中的更改创建“ID”列,按名称分区。本质上,每次“任务”更改并从 1 重新启动 ID 计数器时,“ID”都应重置为 1。
我尝试了排名、行号甚至滞后函数,但似乎无法找到合适的解决方案。 有什么想法吗?
【问题讨论】:
标签: sql row rank gaps-and-islands