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

如何用SQL按多阈值统计符合条件的行数及Check字段1的数量

多阈值统计SQL实现方案

方法一:构造阈值集合关联统计(推荐)

通过构造包含所有指定阈值的临时集合,再与原表关联后分组统计,这种写法简洁且易于扩展新阈值:

WITH thresholds AS (
    SELECT 0 AS threshold UNION ALL
    SELECT 200 UNION ALL
    SELECT 400 UNION ALL
    SELECT 600 UNION ALL
    SELECT 800 UNION ALL
    SELECT 1000
)
SELECT
    t.threshold,
    COUNT(y.ID) AS total_rows, -- 统计Score大于当前阈值的总行数
    SUM(CASE WHEN y.`Check` = 1 THEN 1 ELSE 0 END) AS check_1_count -- 统计其中Check=1的数量
FROM thresholds t
LEFT JOIN your_table y ON y.Score > t.threshold
GROUP BY t.threshold
ORDER BY t.threshold;

兼容老版本数据库的写法(无WITH子句)

如果你的数据库不支持WITH公共表表达式,可直接用子查询构造阈值集合:

SELECT
    t.threshold,
    COUNT(y.ID) AS total_rows,
    SUM(CASE WHEN y.`Check` = 1 THEN 1 ELSE 0 END) AS check_1_count
FROM (
    SELECT 0 AS threshold UNION ALL
    SELECT 200 UNION ALL
    SELECT 400 UNION ALL
    SELECT 600 UNION ALL
    SELECT 800 UNION ALL
    SELECT 1000
) t
LEFT JOIN your_table y ON y.Score > t.threshold
GROUP BY t.threshold
ORDER BY t.threshold;

注意事项

  • 由于Check是SQL保留字,需用对应数据库的转义符包裹:MySQL用反引号,SQL Server用方括号[Check],Oracle用双引号"Check"`。
  • 若原表中Score为NULL,Score > threshold会返回NULL,不会被统计,符合常规需求;若需包含NULL值,可调整条件为y.Score > t.threshold OR y.Score IS NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:00:00