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

如何在SQL中按公司统计用户总数及有≥3条日志用户的占比

解决公司用户日志占比统计问题

嘿,我来帮你搞定这个需求!你已经写出了统计各公司用户总数的基础语句,现在只需要把用户日志数量的统计逻辑和它结合起来,就能得到你要的占比列了。

完整SQL语句

SELECT
    u.company,
    COUNT(DISTINCT u.id_user) AS total_users,
    COUNT(DISTINCT CASE WHEN user_logs.log_count >= 3 THEN u.id_user END) AS users_with_3plus_logs,
    ROUND(
        COUNT(DISTINCT CASE WHEN user_logs.log_count >= 3 THEN u.id_user END) * 100.0 / COUNT(DISTINCT u.id_user),
        2
    ) AS percentage_with_3plus_logs
FROM
    User u
LEFT JOIN (
    -- 先统计每个用户的日志总数
    SELECT id_user, COUNT(log_id) AS log_count
    FROM Log
    GROUP BY id_user
) user_logs ON u.id_user = user_logs.id_user
GROUP BY u.company;

关键部分解释

  • 子查询user_logs:先单独统计每个用户的日志条数,这样我们能快速筛选出满足“至少3条日志”的用户。
  • LEFT JOIN:用左连接保证即使某个用户没有任何日志,也会被算进公司总用户数里(避免遗漏用户)。
  • 条件统计用户数:COUNT(DISTINCT CASE WHEN user_logs.log_count >=3 THEN u.id_user END)会自动忽略日志数不足3的用户,只统计符合条件的人数。
  • 占比计算:乘以100.0是为了避免整数除法(不然结果会是0或1这种无意义的整数),ROUND(...,2)是把占比保留两位小数,让结果更直观。

示例结果

对应你提到的Apple有7个用户、Google有6个用户的场景,假设Apple有4个用户满足日志数≥3,Google有3个,结果会是这样:

companytotal_usersusers_with_3plus_logspercentage_with_3plus_logs
Apple7457.14
Google6350.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:51