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

SQL技术求助:统计员工状态数据并返回单行结果

解决单行返回三类员工统计的SQL问题

我来帮你搞定这个问题~你之前执行的SQL为啥不符合预期呢?因为GROUP BY active会把数据按active的值分成两组(1和0),所以返回的是两行结果,而且列名重复用了total,这显然和你想要的「单行返回总员工数、活跃数、非活跃数」的需求不匹配。

要实现单行返回多个统计值,我们可以用条件聚合的方式,也就是在聚合函数里加入条件判断,把不同条件的统计结果放到同一行的不同列中。这里给你两种可行的方案:

方案一:使用CASE语句明确判断

这种方式逻辑清晰,适合新手理解:

SELECT
  COUNT(*) AS total_employees,
  SUM(CASE WHEN active = 1 THEN 1 ELSE 0 END) AS active_employees,
  SUM(CASE WHEN active = 0 THEN 1 ELSE 0 END) AS inactive_employees
FROM it_staff_status;

方案二:利用active字段的0/1特性简化

因为你的active字段只有0和1两种值,我们可以直接用求和来统计活跃数,再通过总数减去活跃数得到非活跃数,代码更简洁:

SELECT
  COUNT(*) AS total_employees,
  SUM(active) AS active_employees,
  COUNT(*) - SUM(active) AS inactive_employees
FROM it_staff_status;

结果说明

执行上面任意一个SQL语句后,都会返回一行数据:

total_employeesactive_employeesinactive_employees
642

完全符合你需要的统计结果,列名也清晰合理。

内容的提问来源于stack exchange,提问作者Muhammad Faizan Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:23:06