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

PostgreSQL-NodeJS中统计值出现占比的SQL查询方案

SQL查询:统计指定字段达标数量并计算占比

嘿,针对你的需求,咱们可以用CASE条件判断结合简单算术运算来实现,思路很直观,适合刚学SQL的你理解:

核心思路

咱们要逐个检查hh_total_fhc_0到hh_total_fhc_4这5个字段:

  • 如果字段值≥1(自动忽略null,因为null和任何值比较都会返回null,最终会被判定为不达标),就记为1分
  • 不满足条件的(包括值<1或者null)记为0分
    把这5个字段的分数加起来,就是达标的字段总数,再除以hh_match_count就能得到占比了。

针对≥1的SQL查询语句

SELECT
  hh_match_count,
  -- 计算达标的字段数量
  (
    CASE WHEN hh_total_fhc_0 >= 1 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_1 >= 1 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_2 >= 1 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_3 >= 1 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_4 >= 1 THEN 1 ELSE 0 END
  ) AS qualified_field_count,
  -- 计算占比:用1.0强制转换为浮点型,避免整数除法丢失精度,ROUND保留两位小数可按需调整
  ROUND(
    (
      CASE WHEN hh_total_fhc_0 >= 1 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_1 >= 1 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_2 >= 1 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_3 >= 1 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_4 >= 1 THEN 1 ELSE 0 END
    ) / 1.0 / hh_match_count,
    2
  ) AS qualified_ratio
FROM your_table_name; -- 记得把这里替换成你的实际表名

扩展到≥2、≥3的情况

非常简单!只需要把每个CASE语句里的>=1改成你需要的阈值就行,比如统计≥2的字段占比:

SELECT
  hh_match_count,
  (
    CASE WHEN hh_total_fhc_0 >= 2 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_1 >= 2 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_2 >= 2 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_3 >= 2 THEN 1 ELSE 0 END +
    CASE WHEN hh_total_fhc_4 >= 2 THEN 1 ELSE 0 END
  ) AS qualified_field_count,
  ROUND(
    (
      CASE WHEN hh_total_fhc_0 >= 2 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_1 >= 2 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_2 >= 2 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_3 >= 2 THEN 1 ELSE 0 END +
      CASE WHEN hh_total_fhc_4 >= 2 THEN 1 ELSE 0 END
    ) / 1.0 / hh_match_count,
    2
  ) AS qualified_ratio
FROM your_table_name;

小补充

如果以后字段数量变多(比如到hh_total_fhc_10),重复写CASE会有点繁琐,那时候可以学习用列转行的技巧(比如SQL Server的UNPIVOT、MySQL的UNION ALL)来简化,但目前只有5个字段,直接写CASE是最直观易懂的方式,适合你逐步加深对SQL的理解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:44