sql - Инкремент числа над некоторыми указанными c записями - PullRequest
0 голосов
/ 19 февраля 2020

Я использую Amazon Redshift. У меня есть столбец флага, содержащий 0 или 1 на основе определенного условия, и все отсортировано по возрастанию, и я хочу, чтобы число (DesiredPartition) увеличивалось всякий раз, когда есть 1 флаг. Это невозможно при разбиении курса.

| DesiredPartition | FlagValue | Time |
|------------------|-----------|------|
| 1                | 0         |      |
| 1                | 0         |      |
| 1                | 0         |      |
| 2                | 1         |      |
| 2                | 0         |      |
| 2                | 0         |      |
| 3                | 1         |      |
| 3                | 0         |      |
| 3                | 0         |      |

Если я экспортирую все данные в csv и использую для l oop для языка программирования, то, конечно, это очень просто, но определенно не выполнимо , Но я ничего не могу придумать и ничего не могу найти с помощью sql подхода, основанного на запросах.

1 Ответ

2 голосов
/ 19 февраля 2020

Вы не говорите, какой движок базы данных используете, поэтому я предполагаю, что это современный механизм, который реализует оконные функции.

Используйте SUM() в качестве оконной функции, как в:

select *,
  sum(flagvalue) over(order by time) as desired_partition
from t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...