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

Big Query SQL:如何对INTERVAL类型列编写COUNTIF条件统计语句

解决方案

报错根因

  • 语法错误:你写的1:30不是合法的INTERVAL类型字面量,SQL解析器无法识别该格式
  • 引用错误:CTE中定义的临时表名为org_table,trip_duration是字段名,你后续查询错误将字段名作为表名引用
  • 类型不匹配:字符串无法直接和INTERVAL类型做大小比较

正确实现(无需转TIME类型)

INTERVAL类型本身支持原生比较,直接使用标准INTERVAL字面量即可,写法更简单也不会出现时长超范围的截断问题:

WITH 
org_table AS (
    SELECT
    ended_at - started_at as trip_duration
    FROM `cyclistic-328701.12_month_user_data_cyclistic.20*`
)
SELECT
  COUNTIF(trip_duration < INTERVAL 90 SECOND) AS false_start
FROM org_table;

如果确实需要转成秒数做判断,可以用EXTRACT函数提取各时间单位换算求和:

WITH 
org_table AS (
    SELECT
    ended_at - started_at as trip_duration
    FROM `cyclistic-328701.12_month_user_data_cyclistic.20*`
)
SELECT
  COUNTIF(
    EXTRACT(SECOND FROM trip_duration) 
    + EXTRACT(MINUTE FROM trip_duration)*60 
    + EXTRACT(HOUR FROM trip_duration)*3600
    + EXTRACT(DAY FROM trip_duration)*86400
    < 90
  ) AS false_start
FROM org_table;

注意:你提到的转TIME类型的思路不推荐使用,TIME类型仅支持00:00:00到23:59:59的范围,若行程时长超过24小时会出现截断错误,直接用INTERVAL原生比较更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:02