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

如何编写需使用group by的员工状态统计SQL查询

员工状态统计SQL实现

表结构说明

你使用的员工状态记录表结构如下:

Columns: name varchar
         status varchar
         id varchar

status字段可选值为online、offline、away、busy,表会定期存储所有员工不同时间点的状态快照。

统计规则

你需要的统计逻辑如下:

  1. 员工只要有过至少1次busy状态,最终展示为busy
  2. 员工从未出现过busy,但至少有过1次online状态,最终展示为available
  3. 员工从未出现过online和busy状态,最终展示为not available

可直接运行的SQL语句

该语句兼容MySQL、PostgreSQL、SQL Server等绝大多数主流数据库,替换表名即可使用:

SELECT 
  name,
  CASE
    -- 优先判断是否有过busy状态
    WHEN SUM(CASE WHEN status = 'busy' THEN 1 ELSE 0 END) > 0 THEN 'busy'
    -- 排除busy的情况后判断是否有过online
    WHEN SUM(CASE WHEN status = 'online' THEN 1 ELSE 0 END) > 0 THEN 'available'
    -- 剩余情况返回not available
    ELSE 'not available'
  END AS final_status
FROM 替换为你的实际表名
GROUP BY name
ORDER BY name;

如果需要输出和示例完全一致的带引号格式,可以调整输出字段,以MySQL为例:

SELECT 
  name,
  CONCAT('"',
    CASE
      WHEN SUM(CASE WHEN status = 'busy' THEN 1 ELSE 0 END) > 0 THEN 'busy'
      WHEN SUM(CASE WHEN status = 'online' THEN 1 ELSE 0 END) > 0 THEN 'available'
      ELSE 'not available'
    END,
  '"') AS final_status
FROM 替换为你的实际表名
GROUP BY name
ORDER BY name;

用你提供的样本数据运行后,输出结果和你给出的预期样例完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:02