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

按年月统计布尔值数量及false/true比率的SQL查询问题

正确查询语句实现

适配支持date_trunc的数据库(PostgreSQL、Redshift、Spark SQL等)

WITH monthly_alive_stats AS (
    SELECT
        DATE_TRUNC('month', "timestamp") AS month_begin,
        COUNT(CASE WHEN alive = true THEN 1 END) AS true_count,
        COUNT(CASE WHEN alive = false THEN 1 END) AS false_count
    FROM 替换为你的实际表名
    GROUP BY DATE_TRUNC('month', "timestamp")
)
SELECT
    UPPER(TO_CHAR(month_begin, 'MON-YYYY')) AS "Period",
    true_count AS "True",
    false_count AS "False",
    ROUND(
        CASE WHEN true_count = 0 THEN NULL 
        ELSE false_count::NUMERIC / true_count END,
        2
    ) AS "false/true"
FROM monthly_alive_stats
ORDER BY month_begin ASC;

MySQL适配版本(不支持date_trunc场景)

SELECT
    UPPER(DATE_FORMAT(`timestamp`, '%b-%Y')) AS `Period`,
    SUM(alive = TRUE) AS `True`,
    SUM(alive = FALSE) AS `False`,
    ROUND(
        IF(SUM(alive = TRUE) = 0, NULL, SUM(alive = FALSE)/SUM(alive = TRUE)),
        2
    ) AS `false/true`
FROM 替换为你的实际表名
GROUP BY DATE_FORMAT(`timestamp`, '%Y-%m')
ORDER BY DATE_FORMAT(`timestamp`, '%Y-%m') ASC;

之前报错的常见原因

  • timestamp是SQL保留关键字,字段名如果是这个需要用引号/反引号包裹,避免语法解析错误
  • 没有处理true计数为0的场景,触发除以0的报错
  • 直接用整数做除法,得到的结果会自动取整丢失小数位,需要先转成数值类型再计算
  • 日期格式化参数不匹配你用的数据库语法,导致输出格式不对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:54:03