Я недавно начал работать с sql, и я работаю над таблицей с 3 столбцами.Таблица выглядит следующим образом:
| indv | number | flag |
|:----:|:------:|:----:|
| 2477 | 7612 | 1 |
| 2477 | 7850 | 0 |
| 2477 | 7862 | 0 |
| 2477 | 7952 | 1 |
| 2477 | 8150 | 0 |
| 2477 | 8280 | 0 |
| 2477 | 8301 | 1 |
| 2560 | 7612 | 0 |
| 2560 | 7850 | 0 |
| 2560 | 7862 | 0 |
| 2877 | 3422 | 1 |
| 2877 | 3423 | 1 |
| 2877 | 5612 | 1 |
| 2877 | 6123 | 1 |
Я хочу написать запрос, который создает новый столбец на основе группировки по значениям indv и значениям во флаге.Как, например, для группы 2477 новый столбец номер 1 создается так, что его значение равно номеру по умолчанию (скажем, 10000), если флаг равен 0 для каждой записи в группе, но равен первому значению группы, если флаг равен 1.Однако если разница между числом для 2 последовательных флагов = 1 больше 50, тогда столбец number1 должен иметь значение, соответствующее последнему значению flag = 1 в столбце номера.Это может показаться запутанным, поэтому также предоставили пример вывода:
| indv | number | flag | number1 |
|:----:|:------:|:----:|---------|
| 2477 | 7612 | 1 | 7612 |
| 2477 | 7850 | 0 | 7612 |
| 2477 | 7862 | 0 | 7612 |
| 2477 | 7952 | 1 | 7952 |
| 2477 | 8150 | 0 | 7952 |
| 2477 | 8280 | 0 | 7952 |
| 2477 | 8301 | 1 | 8301 |
| 2560 | 7612 | 0 | 10000 |
| 2560 | 7850 | 0 | 10000 |
| 2560 | 7862 | 0 | 10000 |
| 2877 | 3422 | 1 | 3422 |
| 2877 | 3423 | 1 | 3422 |
| 2877 | 5612 | 1 | 5612 |
| 2877 | 6123 | 1 | 6123 |