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

SQLite按periodOfDay分组的多条件记录数统计需求

解决SQLite按periodOfDay分组的多条件统计需求

没问题,我来帮你搞定这个SQLite的统计查询!你的需求很明确,用条件聚合就能轻松实现——也就是在GROUP BY之后,用SUM()配合CASE WHEN来分别统计符合不同条件的记录数。

直接给你完整的SQL语句,然后再拆解说明:

SELECT
    periodOfDay,
    COUNT(*) AS total_records,
    SUM(CASE WHEN range_1 < 36 AND range_2 < 18 THEN 1 ELSE 0 END) AS count_condition1,
    SUM(CASE WHEN range_1 > 36 AND range_1 < 100 AND range_2 > 18 AND range_2 < 100 THEN 1 ELSE 0 END) AS count_condition2,
    SUM(CASE WHEN range_1 > 100 AND range_2 > 100 THEN 1 ELSE 0 END) AS count_condition3
FROM
    your_table_name -- 这里替换成你的实际表名
GROUP BY
    periodOfDay
ORDER BY
    periodOfDay; -- 可选,按periodOfDay排序让结果更清晰

语句拆解说明:

  • COUNT(*):直接统计每个periodOfDay分组下的总记录数,这是最基础的聚合函数。
  • SUM(CASE WHEN ... THEN 1 ELSE 0 END):核心逻辑是对每条记录判断是否符合条件,符合就返回1,不符合返回0,最后用SUM()把这些1加起来,得到符合条件的记录总数。
    • 第一个SUM对应你要的“range_1 < 36 且 range_2 < 18”的统计;
    • 第二个SUM对应“36 < range_1 < 100 且 18 < range_2 < 100”(拆成range_1 >36 AND range_1 <100是为了逻辑更清晰,SQLite也支持连续比较写法,但分开写可读性更好);
    • 第三个SUM对应“range_1 > 100 且 range_2 > 100”的统计。

注意点:

  • 记得把your_table_name替换成你实际的表名;
  • 如果你的字段可能存在NULL值,要考虑是否需要用COALESCE处理,但从你的需求描述来看,应该不需要额外处理;
  • 执行这个语句后,会得到每个periodOfDay(0、1、2)对应的四个统计值,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:57:16