generate_series для минимальной и максимальной дат

Вот самый простой запрос, который я хочу выполнить в базе данных Greenplum (например, postgresql 8.2.15).

Поле create_date в таблице t является отметкой времени без часового пояса. Может ли кто-нибудь указать мне правильный запрос для этого? Спасибо.

select * from generate_series ((select EXTRACT (YEAR FROM MIN(t1.create_date)) from t1),(select EXTRACT (YEAR FROM MAX(t1.create_date)) from t1))

Его метательная ошибка

ERROR:  function generate_series(double precision, double precision) does not exist

СТРОКА 1: выберите * из generate_series ((выберите EXTRACT (YEAR FROM MI... ^ ПОДСКАЗКА: Ни одна функция не соответствует заданному имени и типам аргументов. Возможно, вам потребуется добавить явное приведение типов.


person Nemo    schedule 15.11.2013    source источник


Ответы (1)


Вы можете явно привести аргументы к целому числу:

select *
from generate_series (
    (select EXTRACT (YEAR FROM MIN(t1.create_date)) from t1)::int,
    (select EXTRACT (YEAR FROM MAX(t1.create_date)) from t1)::int
)

демонстрация скрипки sql

person Roman Pekar    schedule 15.11.2013