You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PostgreSQL中统计每月每一天的记录数量

PostgreSQL按日统计指定月份符合条件的记录数

方案1:仅统计有数据的日期

直接对visit_disch_date分组,格式化日期后输出每日计数:

SELECT
    TO_CHAR(visit.visit_disch_date, 'MM-DD-YYYY') AS disch_date,
    COUNT(*) AS record_count
FROM visit
WHERE
    visit.visit_disch_date >= '2022-12-01' 
    AND visit.visit_disch_date < '2023-01-01' -- 修正原条件,确保包含12月31日全天数据
    AND visit.visit_stay_type = '1'
GROUP BY visit.visit_disch_date
ORDER BY visit.visit_disch_date;

方案2:显示12月所有日期(含计数为0的日期)

如果需要输出12月每一天的结果,哪怕当天没有符合条件的记录,先通过generate_series生成完整日期序列,再左连接原表统计:

WITH date_range AS (
    SELECT generate_series(
        '2022-12-01'::DATE,
        '2022-12-31'::DATE,
        '1 day'::INTERVAL
    ) AS date
)
SELECT
    TO_CHAR(dr.date, 'MM-DD-YYYY') AS disch_date,
    COUNT(v.visit_disch_date) AS record_count
FROM date_range dr
LEFT JOIN visit v ON dr.date = v.visit_disch_date
    AND v.visit_stay_type = '1'
GROUP BY dr.date
ORDER BY dr.date;

说明

  • TO_CHAR函数用来将日期格式化为你需要的MM-DD-YYYY格式。
  • 原查询的visit_disch_date < '2022-12-31'会排除12月31日的所有记录(因为该条件等价于< '2022-12-31 00:00:00'),改用< '2023-01-01'才能正确包含12月31日全天的数据。

内容的提问来源于stack exchange,提问作者Perk8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 19:01:52