如何编写SQL计算每个用户的employerid数量总体平均值?
计算每个userid对应的employerid数量的总体平均值
根据你的需求和示例,我们可以通过两层查询来实现:
实现代码(匹配你的示例计算逻辑)
SELECT SUM(employer_count) / COUNT(*) AS overall_average FROM ( -- 先统计每个userid对应的employerid数量 SELECT userid, COUNT(employerid) AS employer_count FROM your_table_name GROUP BY userid ) AS user_employer_summary;
代码解释
- 内层子查询:按
userid分组,统计每个用户关联的雇主数量,得到结果集:userid employer_count 1321 2 1567 1 - 外层查询:将所有用户的雇主数量求和(2+1=3),再除以数据表的总记录数(3),最终得到你示例中的1.33。
补充:如果需要「用户平均雇主数」
要是你实际想算的是每个用户的雇主数的平均值(即(2+1)/2=1.5),可以直接用AVG()函数:
SELECT AVG(employer_count) AS average_employers_per_user FROM ( SELECT userid, COUNT(employerid) AS employer_count FROM your_table_name GROUP BY userid ) AS user_employer_summary;
注意点
- 把代码里的
your_table_name替换成你实际的数据表名。 - 如果
employerid可能存在空值,建议用COUNT(DISTINCT employerid)来避免空值干扰,确保统计准确。
内容的提问来源于stack exchange,提问作者Mikasa
相关产品推荐
相关产品推荐

