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

查询18:00时办公室在岗员工人数的SQL技术问题

解决思路与正确SQL

要统计18:00(对应数值1800)的在岗人数,核心是判断该时间点是否落在员工的打卡区间内——即员工已经签到(CheckInTime ≤ 1800)且尚未签退(CheckOutTime ≥ 1800)。

正确SQL语句

SELECT COUNT(*) AS on_duty_count
FROM `Time`
WHERE CheckInTime <= 1800 AND CheckOutTime >= 1800;

对原错误语句的修正说明

  • 原语句中使用row_number()完全多余,统计人数直接用COUNT(*)即可,无需生成行号再求和。
  • 原条件仅判断CheckOutTime >= 1800,遗漏了CheckInTime <= 1800的关键条件,会错误包含那些还未签到但签退时间晚于1800的员工(实际这类员工此时不在岗)。

示例数据验证

示例数据中只有最后一条记录(CheckInTime=1630,CheckOutTime=2020)满足1630 ≤1800 ≤2020,执行上述SQL会返回结果1,符合实际在岗情况。

内容的提问来源于stack exchange,提问作者Ziya Mert Karakas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:11:13