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

如何用单条SQL计算demo表中有理赔记录的会员占比(适配MariaDB、SQLite)

兼容MariaDB与SQLite的单条查询语句

SELECT 
  ROUND(
    (COUNT(DISTINCT claims.ID) * 100.0) / COUNT(DISTINCT demo.ID),
    2
  ) AS claim_member_percentage
FROM demo
LEFT JOIN claims ON demo.ID = claims.ID;

逻辑说明

  • 采用左连接保留demo表的全量会员记录,避免过滤掉无理赔的会员
  • COUNT(DISTINCT claims.ID) 仅统计存在理赔记录的唯一会员ID,无理赔的对应行claims.ID为NULL,不会被计入统计,完全等价你给出的第一个查询结果
  • 乘以100.0是为了强制触发浮点运算,避免整数除法导致结果取整为0的问题
  • 末尾的2是保留2位小数,可根据需求自行调整,不需要格式化精度可直接去掉ROUND函数

避免除以0的优化版本

如果demo表可能为空,可增加空值判断避免报错:

SELECT 
  CASE 
    WHEN COUNT(DISTINCT demo.ID) = 0 THEN 0
    ELSE ROUND((COUNT(DISTINCT claims.ID) * 100.0) / COUNT(DISTINCT demo.ID), 2)
  END AS claim_member_percentage
FROM demo
LEFT JOIN claims ON demo.ID = claims.ID;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:48:03