Ограничить SQL-запрос днями

Я использую этот SQL-запрос для создания отчета о состоянии по дням:

CREATE TABLE TICKET(
 ID INTEGER NOT NULL,
 TITLE TEXT,
 STATUS INTEGER,
 LAST_UPDATED DATE,
 CREATED DATE
)
;

Запрос:

SELECT t.created,
       COUNT(CASE WHEN t.status = '1' THEN 1 END) as cnt_status1,
       COUNT(CASE WHEN t.status = '2' THEN 1 END) as cnt_status2,
       COUNT(CASE WHEN t.status = '3' THEN 1 END) as cnt_status3,
       COUNT(CASE WHEN t.status = '4' THEN 1 END) as cnt_status4
FROM ticket t
GROUP BY t.created

Как я могу ограничить этот запрос 7 днями?
Также я хотел бы получить результаты, разделенные днем. Например, я хотел бы сгруппировать первые даты на 24 часа, вторые на следующие 24 часа и т. д.

Ожидаемый результат:

Введите описание изображения здесь

1 ответ

  1. Это может помочь:

    SELECT   TO_CHAR(t.created, 'YYYY-MM-DD') AS created_date,
             COUNT(CASE WHEN t.status = '1' THEN 1 END) as cnt_status1,
             COUNT(CASE WHEN t.status = '2' THEN 1 END) as cnt_status2,
             COUNT(CASE WHEN t.status = '3' THEN 1 END) as cnt_status3,
             COUNT(CASE WHEN t.status = '4' THEN 1 END) as cnt_status4
    FROM     ticket t
    WHERE    t.created >= SYSDATE-7
    GROUP BY TO_CHAR(t.created, 'YYYY-MM-DD')
    ORDER BY created_date;
    

    Я использовал функцию oracle для преобразования даты. Я уверен, что вы найдете соответствующий для postgresql.