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

如何利用两个独立表的查询结果计算总成本与用户数的比值?

计算总成本除以用户数的SQL实现

方法一:子查询直接计算

直接将两个聚合查询作为子查询,在主查询中执行除法运算:

SELECT 
    (SELECT SUM(costs) FROM costs) / (SELECT COUNT(DISTINCT user_id) FROM users) AS cost_per_user;

cost_per_user是结果的别名,代表每个用户的平均成本,写法简洁直接。

方法二:交叉连接(CROSS JOIN)合并结果

先分别计算用户数和总成本,再通过交叉连接合并单行结果后做除法:

SELECT 
    c.total_cost / u.user_count AS cost_per_user
FROM 
    (SELECT COUNT(DISTINCT user_id) AS user_count FROM users) u
CROSS JOIN 
    (SELECT SUM(costs) AS total_cost FROM costs) c;

这种方式结构更清晰,后续如果需要添加其他聚合指标,扩展起来更方便。

处理除数为0的情况

如果users表可能没有用户(用户数为0),直接除法会触发错误,可用NULLIF函数处理,当用户数为0时返回NULL:

-- 子查询写法
SELECT 
    (SELECT SUM(costs) FROM costs) / NULLIF((SELECT COUNT(DISTINCT user_id) FROM users), 0) AS cost_per_user;

-- 交叉连接写法
SELECT 
    c.total_cost / NULLIF(u.user_count, 0) AS cost_per_user
FROM 
    (SELECT COUNT(DISTINCT user_id) AS user_count FROM users) u
CROSS JOIN 
    (SELECT SUM(costs) AS total_cost FROM costs) c;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:25:53