Как сделать нумерацию начинающуюся с нуля каждый год?

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

Один из способов - использование функции row_number(), которая генерирует уникальные числовые значения для каждой строки. Для начала, вам необходимо иметь столбец, который содержит информацию о годе. Допустим, у вас есть таблица data с полями id, name и year. Вам нужно добавить новый столбец number, который будет содержать нумерацию, начинающуюся с нуля каждый год:

ALTER TABLE data
    ADD COLUMN number INTEGER;

UPDATE data SET number = subquery.row_number 
FROM (
    SELECT id, row_number() OVER (PARTITION BY year ORDER BY id) - 1 AS row_number
    FROM data
) AS subquery
WHERE data.id = subquery.id;

В этом примере мы используем оконную функцию row_number() с фразой PARTITION BY year, чтобы разделить строки на группы по годам. Затем мы вычитаем 1 из значения row_number, чтобы начать нумерацию с нуля. Результат этого запроса будет обновить столбец number в таблице data соответствующими значениями.

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