Postgresql 7:如何按月分组

时间:2017-11-03 08:37:31

标签: php postgresql

我执行sql查询的任务需要每个月返回所有结果。 我的查询是:

SELECT tab_1.advert_level_id, tab_3.level, count(tab_1.advert_id) 
FROM table_1 AS tab_1
LEFT JOIN table_2 AS tab_2 ON tab_2.id = tab_1.advert_id
LEFT JOIN table_3 as tab_3 on tab_1.advert_level_id = tab_3.id
WHERE tab_2.date_published > 1496275200 AND tab_2.date_published < 1498867200
group by tab_1.advert_level_id, tab_3.level
ORDER BY tab_1.advert_level_id ASC

我将此查询放入foreach循环中以重新绑定开始结束时间戳。当这个查询循环多次时,它花费了太多时间,我的服务器崩溃了消息&#34; 504 Gateway Time-out&#34;。有没有办法删除循环并只运行一次我的查询,因为我按月使用分组?我不熟悉按月分组,我需要一些帮助。

1 个答案:

答案 0 :(得分:1)

class A {
    static final String classPath;
    static {
        try {
            classPath = new ClassPathResource("").getFile().toString();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

你只是&#34;截断&#34;您的日期列到&#34;月&#34;然后在group by中使用它并选择子句

在您的情况下,您可能需要转换&#34;日期&#34;将列信息转换为DATE_TRUNC()将识别的内容。

https://www.postgresql.org/docs/7.1/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC