PostgreSQL按日期统计行数报错求助:获取2023-01-01起每日数据
PostgreSQL查询修正:统计2023-01-01起每日Opportunity行数
修正后的查询语句
SELECT TO_CHAR("CreatedOn"::DATE, 'YYYYMMDD') AS ExecutedOn, COUNT(*) AS Opp FROM "CPR"."Opportunity" WHERE "CreatedOn" >= '2023-01-01'::DATE GROUP BY "CreatedOn"::DATE ORDER BY ExecutedOn;
修正说明
- 优化过滤条件:将
DATE("CreatedOn") >= '2023-01-01'改为"CreatedOn" >= '2023-01-01'::DATE,可直接利用CreatedOn字段上的索引(若存在),避免全表扫描,提升查询效率。 - 简化GROUP BY子句:直接按转换后的日期
"CreatedOn"::DATE分组,无需重复编写TO_CHAR表达式,逻辑更清晰,同时规避重复表达式可能引发的语法兼容问题。 - 调整排序逻辑:将
ORDER BY Opp改为ORDER BY ExecutedOn,让结果按日期顺序展示,更贴合每日统计的需求(若需按计数排序,可改回ORDER BY Opp)。
原语句报错原因推测
原语句的GROUP BY表达式语法本身合规,报错大概率是输入时的隐形字符、引号格式错误,或是特定PostgreSQL版本的兼容问题,改用上述简化写法即可解决。
内容的提问来源于stack exchange,提问作者Kittu SD
相关产品推荐
相关产品推荐

