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

T-SQL中如何基于datediff函数获取唯一ID分组的最小时间差值

原SQL问题说明

  • 带空格的列名Start Time、End Time没有做转义处理,SQL解析时会直接报语法错误,不同数据库转义规则不同,MySQL用反引号,SQL Server用方括号,PostgreSQL用双引号。
  • 聚合函数MIN()不能放在WHERE子句里:WHERE是用来做分组前的行级过滤的,聚合计算是分组之后才执行的,不可能在分组前就用聚合结果做筛选。
  • 你的需求是取每个ID分组下的最小时间差,直接把MIN()作用在时间差计算逻辑上作为返回字段即可,不需要额外写筛选条件。

正确SQL示例(MySQL环境)

SELECT 
  ID,
  CONCAT(MIN(TIMESTAMPDIFF(HOUR, `Start Time`, `End Time`)), ' hours') AS `Elapsed Time`
FROM t
GROUP BY ID

如果使用其他数据库,只需要调整对应的时间差函数和字符串拼接规则即可:

  • SQL Server:时间差计算用DATEDIFF(HOUR, [Start Time], [End Time]),字符串拼接支持CONCAT函数
  • PostgreSQL:时间差计算用EXTRACT(HOUR FROM ("End Time" - "Start Time")),字符串拼接可以用||运算符或者CONCAT函数

运行后就能得到你想要的每个ID对应最小耗时的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:36:03