Дано: таблица n_birds (данные учетов птиц ).

Необходимо: выбрать для каждого вида, и одновременно для каждого года, максимальное значение показателя все_пары  только за время гнездования.  Отобрать затем те виды, для которых длина образовавшегося ряда значений составляет минимум 25 лет.



1. Вначале выберем данные за гнездовой период (май-июль) в новую табл. g_pr:
select * into g_pr from n_birds where date_part('month',дата::datetime)>4 and date_part('month',дата::datetime)<8;
2. Сгруппируем данные по годам и по видам, найдем максимум внутри каждой группы, рез-т сохраним как табл. g_pr_max:
select вид,date_part('year',дата::datetime),max(все_пары::float4) into g_pr_max from g_pr group by date_part('year',дата::datetime),вид order by вид;
3. Добавим новый столбец cnt в табл. g_pr_max:
alter table g_pr_max add column cnt int2;
4. Подсчитаем число макс. значений для каждого вида, рез-т сохраним в табл. num_years_per_species:
select вид,count(date_part)  into num_years_per_species from g_pr_max group by вид order by вид;
5. Перенесем значение "счетчика" лет из таблицы num_years_per_species в подготовленный столбец cnt табл. g_pr_max:
update g_pr_max set cnt = num_years_per_species.count::int2 where вид=num_years_per_species.вид;
6. Совсем просто - выберем из g_pr_max в g_pr_max25:
select * into g_pr_max25 from g_pr_max where cnt>24;
7. Просмотрим таблицу, например, для вида Dendrocopos leucotos:
select вид,max from g_pr_max25 where вид ~~ '%Dendrocopos leucotos%';
8. Теперь сохраним в табл. Dendrocopos_leucotos только числа:
select max into Dendrocopos_leucotos from g_pr_max25 where вид ~~ '%Dendrocopos leucotos%';
9. Из табл. Postgres скопируем ряд в текстовый файл:
copy Dendrocopos_leucotos to '/home/postgres/birds/max/dendrocopos_leucotos_TS';
10. Уберем ненужную таблицу:
drop table Dendrocopos_leucotos;

Затем, пп. 7-10 повторим для каждого вида.