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

如何在SQLite中同时统计分组总行数与特定条件行数?

解决SQLite分组统计总行数与条件行数的问题

你可以通过条件聚合函数实现一次性统计每个pst_id的总行数和clicked_at非空的行数,以下是两种可行的写法:

方法一:使用COUNT结合CASE表达式

SELECT 
    pst_id,
    COUNT(*) AS total_rows,
    COUNT(CASE WHEN clicked_at != '' THEN 1 END) AS non_empty_clicked_rows
FROM consolidated_results
GROUP BY pst_id;

方法二:使用SUM结合CASE表达式

SELECT 
    pst_id,
    COUNT(*) AS total_rows,
    SUM(CASE WHEN clicked_at != '' THEN 1 ELSE 0 END) AS non_empty_clicked_rows
FROM consolidated_results
GROUP BY pst_id;

原理说明

  • COUNT(*):直接统计每个分组内的所有行数,不受字段值影响。
  • COUNT(CASE WHEN ... THEN 1 END):当clicked_at非空时返回1,否则返回NULL;COUNT函数会自动忽略NULL值,最终得到满足条件的行数。
  • SUM(CASE WHEN ... THEN 1 ELSE 0 END):满足条件时累加1,不满足时累加0,求和结果即为符合条件的行数。

你之前的写法错误在于将WHERE子句直接嵌套在聚合函数中,这不符合SQL语法规范,必须通过条件表达式配合聚合函数来实现条件统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:55:00