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

SQLite分组查询问题求助:按课程小节计算日期差值失败

问题排查与修正

你的SQL语句存在两个关键问题:

  • 嵌套子查询返回多行结果,用=匹配会报错:那个子查询会返回所有不重复的小节ID,是一个多行结果集,而=只能匹配单个值,这会直接导致查询失败。而且这个WHERE条件完全多余,根本不需要筛选ID。
  • 缺少必要的分组逻辑:你要按课程小节(ID)分组计算,但原语句没有GROUP BY ID,这会导致整个表只计算一次全局的最早/最晚日期差,而不是每个小节单独计算。

修正后的SQL语句如下:

query =  '''
        SELECT 
          ID as id,
          CAST((JulianDay(max(added)) - JulianDay(min(added))) as INTEGER) as num_days_passed
        FROM course_subsections
        GROUP BY ID
        ORDER BY num_days_passed DESC
     '''

说明:

  • GROUP BY ID:按课程小节ID分组,确保每个小节单独计算日期差
  • max(added)和min(added):分别取当前小节下课程添加的最晚、最早日期
  • JulianDay():将日期转换为儒略日数,相减后得到天数差,用CAST(...) as INTEGER取整得到整数天数
  • 省略了多余的表名前缀(无表别名冲突时可省略),语句更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:35:17