我需要做一个JasperReport。我需要显示的是帐户流程总数,分为weekly intervals
个number
帐户和activated
个帐户。
到目前为止我得到的每周间隔查询:
declined
这似乎是正确的,但不是SELECT *
FROM account_details
WHERE DATE date_opened = DATE_ADD(2014-01-01, INTERVAL(1-DAYOFWEEK(2014-01-01)) +1 DAY)
正确的。它一直在抱怨POSTGRES
。以下是我希望实现的目标:
更新 这很难看,但我不知道更好。我做的工作虽然如此。但不知道是否可以重新考虑它至少看起来更好。我此刻也不知道如何处理除零。
1-DAYOFWEEK
答案 0 :(得分:1)
SELECT to_char(d.day, 'YYYY/MM/DD" - "')
|| to_char(d.day + 6, 'YYYY/MM/DD') AS week
, count(situation ILIKE '%active%' OR NULL) AS activated
, ...
FROM (
SELECT day::date
FROM generate_series('2014-08-11'::date
, '2014-09-14'::date
, '1 week'::interval) day
) d
LEFT JOIN account_details a ON a.date_opened >= d.day
AND a.date_opened < d.day + 7 -- 7, not 6!
GROUP BY d.day;
相关答案:
有关计算具体值的更多信息:
除此之外:您通常会使用enum
或查找表,只存储situation
的ID,而不是冗余的冗长文本。