Выполнение запроса по кварталу или неделе года - PullRequest
0 голосов
/ 30 мая 2018

У меня есть этот запрос, который работает в течение 1 квартала.Однако что, если я хочу выполнить тот же запрос, но для 2-го, 3-го и 4-го квартала календарного года или даже ЕЖЕНЕДЕЛЬНО?

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

SELECT count(1), AVG(resolved_at::TIMESTAMP - created_at::TIMESTAMP) 
FROM supp_cases 
WHERE created_at::TIMESTAMP >= '2017-01-01 00:00:00'::TIMESTAMP 
AND resolved_at::TIMESTAMP <= '2017-03-31 23:59:59'::TIMESTAMP;

Q1 = 2017-01-01 00:00:00 TO 2017-03-31 23:59:59
Q2 = 2017-04-01 00:00:00 TO 2017-06-30 23:59:59
Q3 = 2017-07-01 00:00:00 TO 2017-09-30 23:59:59
Q4 = 2017-10-01 00:00:00 TO 2017-12-31 23:59:59

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Вы можете попробовать использовать интервалы, например:

SELECT * FROM example WHERE created_at > '2017-01-01'
 AND resolved_at < (DATE('2017-01-01') + INTERVAL '1 WEEKS');


SELECT * FROM example WHERE created_at > '2017-01-01'
 AND resolved_at < (DATE('2017-01-01') + INTERVAL '2 MONTHS');
0 голосов
/ 30 мая 2018

Как насчет этого?

SELECT TO_CHAR(created_at, 'YYYY-Q') as created_at_yyyyq,
       TO_CHAR(resolved_at, 'YYYY-Q') as resolved_at_yyyyq,
       count(*)
FROM supp_cases 
GROUP BY created_at_yyyyq, resolved_at_yyyyq
ORDER BY created_at_yyyyq, resolved_at_yyyyq;

Если вы действительно хотите, чтобы строки создавались и обрабатывались в одном квартале, вы можете добавить:

WHERE TO_CHAR(created_at, 'YYYY-Q') = TO_CHAR(resolved_at, 'YYYY-Q')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...